【问题标题】:How do I instantly disable my done button when I switch to airplane mode?当我切换到飞行模式时,如何立即禁用我的完成按钮?
【发布时间】:2015-11-10 13:07:01
【问题描述】:

我的应用中有一个完成按钮,我想在切换到飞行模式时禁用它。我的应用程序中有相同的工作代码。但是,一旦我将应用程序切换到飞行模式,它就不会禁用。仅当我切换到其他视图然后返回此视图时,它才会禁用。有没有办法在我的应用检测到离线模式时立即禁用它?到目前为止,这是我的代码:

  private static boolean isAirplaneModeOn(Context context) {

            return Settings.System.getInt(context.getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, 0) != 0;

        }

在我的 oncreateview 中,我有:

if(isAirplaneModeOn(Application.getAppContext())){
            Toast toast = Toast.makeText(this.getActivity(),getResources().getString(R.string.offline), Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
            mDoneBtn.setActivated(false);
            mDoneBtn.setTextColor(Color.DKGRAY);
            mDoneBtn.setOnClickListener(null);

        }else {
            mDoneBtn.setOnClickListener(this);
        }

还有其他更好的方法吗?还是可以改进以实现我的目标?有任何想法吗? 谢谢!

【问题讨论】:

  • 你在 UI 线程中厌倦了吗?

标签: android android-layout android-fragments android-intent android-settings


【解决方案1】:

为什么不尝试禁用它:

IntentFilter intentFilter = new IntentFilter("android.intent.action.AIRPLANE_MODE");

BroadcastReceiver receiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
       if (!isAirplaneModeOn(this)) { 
          mDoneBtn.setEnabled(false);
       } else { 
          mDoneBtn.setEnabled(true); 
       } 
  }
 };

context.registerReceiver(receiver, intentFilter);

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterRecievers();
}

private void unregisterRecievers() {
    try {
        unregisterReceiver(receiver);
    } catch (Exception e) {
        e.printStackTrace();
    }


}

【讨论】:

  • 这对我不起作用,因为即使使用我的代码我也必须返回 1 步然后返回我的视图以查看禁用的完成按钮。有没有什么办法,它会立即离线,当你返回到你离开的应用视图的那一刻
  • 编辑答案以反映广播接收器。
  • 嗨,一旦用户再次连接,我如何让我的完成按钮处于活动状态?我在哪里以及如何取消注册接收器?
  • 谢谢! unregisterReceiver(receiver) 显示为未定义的错误。有什么我需要导入或更改才能工作的东西吗
  • unregisterReceiver 是在 API 级别 1 中添加的。我认为您不需要什么特别的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多