Android - 如何在后退键上提醒用户,如果想要保存输入的数据?

时间:2012-05-20 20:52:18

标签: android android-alertdialog android-lifecycle

在用户输入数据时,UI / UX屏幕上有“保存”,“取消”按钮。如果用户输入一些数据,但是点击后退键,我需要显示(AlertDialog)是否要保存数据。怎么办?

我认为这应该在以下内容上完成:@override onDestroy()?但无法(某种程度)按住/暂停onDestroy()并显示AlertDialog!

这类似于“Microsoft Word”的功能,但在Android中。

3 个答案:

答案 0 :(得分:1)

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if(needsSave){
            .
            .
            .
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

答案 1 :(得分:0)

有一种专门用于此目的的方法,当用户按下设备上的“后退”按钮时就会调用该方法。

 @Override
public void onBackPressed() {
    //super.onBackPressed();
   ..call the dialog builder here..
}

当用户按下时可以使用super.onBackPressed()方法 正面或负面按钮。

答案 2 :(得分:0)

如果您具有Fragment,则可以通过“侦听器”,然后只要用户按下“后退”按钮就可以侦听。

创建界面。

interface IOnBackPressed {
    fun onBackPressed(): Boolean
}

在您的活动中。

class MyActivity : AppCompatActivity() {
    
     override fun onBackPressed() {
        val fragment =
            this.supportFragmentManager.findFragmentById(R.id.main_container)
        (fragment as? IOnBackPressed)?.onBackPressed()?.not()?.let {
            super.onBackPressed()
        }
    }

}

在您的片段中。

class YourFragmentName : Fragment(), IOnBackPressed {

    override fun onBackPressed(): Boolean {
            //Create Your Dialog.
           //Dialog.Positive.clicked return true
          //Dialog.Negate.clicked return false
    }
}