我有一个具有菜单的应用程序,根据您在菜单中按下的按钮,将打开一个新活动。我希望每个屏幕上都有一个后退按钮,可以将您带到上一个屏幕,所以我想知道如何解决这个问题?
以下是我使用的一些代码:
backButton = (ImageButton) findViewById(R.id.back_button);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
然而,对于我来说,将此代码放在我的所有活动中并不是一个好的编程习惯。我如何创建某种堆栈来保存所有查看的页面并使用它来返回上一页?
我必须在我的应用程序中放置一个后退按钮,这样我才能使用ActionBar中的现有按钮。
答案 0 :(得分:8)
您是否尝试在活动中使用操作栏?在每项活动中使用
ActionBar actionBar = getSupportActionBar();
if(actionBar != null){
actionBar.setTitle(getResources().getString(R.string.app_name));
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setIcon(R.drawable.app_icon);
}
并处理
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:7)
只是一个想法
创建一个扩展Activity的baseClass。在那里声明
@Override
public void onClick(View v) {
super.onBackPressed(); // or super.finish();
}
在所有活动中扩展此基类。在按钮的每个布局中
android:onClick="onClick"
要使按钮的xml设计可重复使用,请在单独的xml中创建它。并使用<include/>
答案 2 :(得分:5)
我建议不要使用自定义后退按钮。 Android有一个硬件后退按钮。按下haradware后退按钮将导航到上一个。
我认为您不需要自定义后退按钮。我不认为它是一个很好的编程实践来覆盖默认行为。
您可以在活动中创建一个后退按钮并实现上述功能。用户仍然可以使用硬件后退按钮来实现相同的功能。因此,您将提供相同的冗余功能。
答案 3 :(得分:1)
所有Android设备上都有一个硬件后退按钮,它完全符合您的代码行,除非被覆盖以执行其他操作。
您也可以参考this answer。