【问题标题】:Avoid Alert Dialog getting closed when back button pressed?按下后退按钮时避免警报对话框关闭?
【发布时间】:2015-09-08 07:48:55
【问题描述】:

首先我想说的是,这是通过查看教程完成的。这是我从广播接收器调用的自定义警报对话框活动部分。唯一的问题是单击后退按钮。一旦警报对话框活动开始,当我按下后退按钮时,它就会关闭。

 public class AlertDialogActivity extends Activity {
    @Override 
 protected void onCreate(Bundle savedInstanceState) 
 { 
    super.onCreate(savedInstanceState);
    this.setFinishOnTouchOutside(false);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
    setContentView(R.layout.activity_inmsgdialog);
 }
  @Override
public void onBackPressed()
{
    super.onBackPressed();
    Toast.makeText(getApplicationContext(), "Back Pressed", Toast.LENGTH_SHORT).show();
}
}

我已尝试onBackPressed 并且能够看到 toast 消息,但活动正在关闭。

【问题讨论】:

  • super.onBackPressed(); //删除这一行

标签: android broadcastreceiver android-alertdialog back


【解决方案1】:

看这里:

 @Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); //Remove this line 
    Toast.makeText(getApplicationContext(), "Back Pressed", Toast.LENGTH_SHORT).show();
} 

如果您想禁用活动的后退按钮,请不要调用super.onBackPressed(); 代码。所以删除这一行。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用以下选项来处理后退按钮按下

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    
        if (keyCode == KeyEvent.KEYCODE_BACK) {
    
           //your code
            return true;
        } else {
    
        }
    }
    

    【讨论】:

    • 我现在试一试,让你知道。
    • 你可以通过删除'super.onBackPressed()'来达到同样的效果,但它可能会导致内存泄漏。
    【解决方案3】:

    不要传播事件,你应该很好。

    @Override
    public void onBackPressed()
    {
        //don't call super
    }
    

    【讨论】:

    • 酷,早几秒钟,我会得到所有赞成票!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多