在android中创建自定义后退按钮

时间:2013-04-19 11:08:57

标签: android android-ui android-button

我有一个具有菜单的应用程序,根据您在菜单中按下的按钮,将打开一个新活动。我希望每个屏幕上都有一个后退按钮,可以将您带到上一个屏幕,所以我想知道如何解决这个问题?

以下是我使用的一些代码:

backButton = (ImageButton) findViewById(R.id.back_button);
        backButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                finish();

            }
        });

然而,对于我来说,将此代码放在我的所有活动中并不是一个好的编程习惯。我如何创建某种堆栈来保存所有查看的页面并使用它来返回上一页?

我必须在我的应用程序中放置一个后退按钮,这样我才能使用ActionBar中的现有按钮。

4 个答案:

答案 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