我可以让操作栏的“向上”导航触发一个确认对话框碎片,上面写着“你确定要回去吗?”
答案 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()。