【发布时间】:2015-09-15 06:01:24
【问题描述】:
我正在使用 BroadcatReceiver 来监控 wi-fi 状态变化。
我想在操作过程中显示ProgressDialog。
显示正常,但未关闭。
我的代码如下::
private final BroadcastReceiver mBluetoothChangeReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
switch (state)
{
case BluetoothAdapter.STATE_OFF:
Log.i(TAG, "STATE_OFF");
showProgress(false);
// showToast("Bluetooth off");
break;
case BluetoothAdapter.STATE_TURNING_OFF:
Log.i(TAG, "STATE_TURNING_OFF");
showProgress(true);
// showToast("Turning Bluetooth off...");
break;
case BluetoothAdapter.STATE_ON:
Log.i(TAG, "STATE_ON");
showProgress(false);
// showToast("Bluetooth on");
break;
case BluetoothAdapter.STATE_TURNING_ON:
Log.i(TAG, "STATE_TURNING_ON");
showProgress(true);
// showToast("Turning Bluetooth on...");
break;
}
}
}
};
public void showProgress(boolean show)
{
ProgressDialog mProgressDialog;
mProgressDialog = new ProgressDialog(ShortcutActivity.this);
mProgressDialog.setMessage(mContext.getString(R.string.settings_msg));
if (show)
{
mProgressDialog.setCancelable(false);
if (!mProgressDialog.isShowing())
mProgressDialog.show();
}
else
{
Log.i(TAG, " " + mProgressDialog.isShowing());
mProgressDialog.setCancelable(true);
if (mProgressDialog.isShowing())
{
mProgressDialog.dismiss();
}
}
}`
如果我的实现包含任何错误,请向我提出解决方案。 或者我的实现方式不对。
【问题讨论】:
-
显示
showProgress方法 -
在您的 showProgress 方法中,每次调用时都会创建一个新的 Progressdialog。您必须关闭现有的 ProgressDialog(当前显示的那个),而不是新创建的。
-
您每次都在创建 ProgressDialog 的新实例,因此它不会关闭之前启动的 ProgressDialog。
-
你必须创建一个listener,它可以有一个回调方法来关闭对话框。
-
ProgressDialog 只创建一次.. 这是在 onCreate 中创建并在 .. 中使用
标签: android progressdialog android-wifi android-broadcast android-broadcastreceiver