android - 让操作栏 "up navigation"触发dialogfragment

标签 android dialog android-actionbar android-dialogfragment

我可以让操作栏的“向上”导航触发一个确认对话框 fragment ,其中显示“您确定要返回吗?”

最佳答案

拦截 up ActionBar 按钮按下很简单,因为一切都是通过 onOptionsItemSelected 完成的。 documentation ,建议您使用 android.R.id.home 来配合 NavUtils (前提是您为父 Activity 设置了元数据,以便 NavUtils > 不会抛出异常等):

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

您的 DialogFragment 应提供实际返回的确认。由于您现在使用的是 Fragment 而不是 Activity,因此您需要将 getActivity() 传递给 NavUtils.

NavUtils.navigateUpFromSameTask(getActivity());

并将 onOptionsItemSelected() 更改为

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        new ConfirmationDialog().show(getSupportFragmentManager(), "confirmation_dialog");
        return true;
    }
    return super.onOptionsItemSelected(item);
}

ConfirmationDialog 是您的自定义 DialogFragment

请注意,对于此示例,我使用的是 support Fragment API。如果不是,请确保将 getSupportFragmentManager() 更改为 getFragmentManager()

关于android - 让操作栏 "up navigation"触发dialogfragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21102818/

相关文章:

android - 如何从协程 kotlin 获取值(value)?

Android:Dialog中的EditText不会拉起软键盘

java - 语法错误,插入 ";"来完成 BlockStatements GreenDroid

c# - 将 C# Windows 窗体代码转换为 C# Android 代码

android - 为什么 c.moveToFirst() 不会跳过第一行

Android 基于检查的每日通知

java - 首选项屏幕中的自定义列表首选项对话框布局,带有自定义列表项

ios - 使用 iOS SDK 生成错误的提要对话框

java - 在什么情况下我可以使用选项菜单/操作栏项调用 findViewById?

java - 如何更改操作栏上标题文本的大小?