使操作栏“向上导航”触发对话框碎片

时间:2014-01-13 22:40:05

标签: android dialog android-actionbar android-dialogfragment

我可以让操作栏的“向上”导航触发一个确认对话框碎片,上面写着“你确定要回去吗?”

2 个答案:

答案 0 :(得分:2)

拦截up ActionBar按钮按下是微不足道的,因为一切都是通过onOptionsItemSelected完成的。 documentation,建议您使用android.R.id.home使用NavUtils(前提是您设置了父活动的元数据,以便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()

答案 1 :(得分:0)

是。按“向上”按钮只需使用R.id.home调用选项菜单回调。所以你可以抓住它,显示对话框,如果按下正按钮,则调用NavUtils.navigateUpTo()。