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

DMC*_*DMC 5 android android-ui android-button

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

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

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

            @Override
            public void onClick(View v) {


                finish();

            }
        });
Run Code Online (Sandbox Code Playgroud)

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

我必须在我的应用程序中放置一个后退按钮,因此我无法使用ActionBar中的现有按钮.

sti*_*ike 8

只是一个想法

创建一个扩展Activity的baseClass.在那里宣布

    @Override
    public void onClick(View v) {
         super.onBackPressed(); // or super.finish();
    }
Run Code Online (Sandbox Code Playgroud)

在所有活动中扩展此基类.并在按钮的每个布局中放置

   android:onClick="onClick"
Run Code Online (Sandbox Code Playgroud)

并使按钮的xml设计可重复使用,在单独的xml中创建它.并使用添加它<include/>


Rah*_*til 8

您是否尝试过在活动中使用操作栏?用于每项活动

ActionBar actionBar = getSupportActionBar();
if(actionBar != null){
    actionBar.setTitle(getResources().getString(R.string.app_name));
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setIcon(R.drawable.app_icon);
}
Run Code Online (Sandbox Code Playgroud)

和处理

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在我替换actionBar.setIcon(R.drawable.app_icon)之前,实际的图标并没有改变.with actionBar.setHomeAsUpIndicator(R.drawable.app_icon); (3认同)

Rag*_*dan 5

我建议不要使用自定义后退按钮.Android有一个硬件后退按钮.按下haradware后退按钮将导航到上一个.

我认为您不需要自定义后退按钮.我不认为它是一个很好的编程实践来覆盖默认行为.

您可以在活动中创建一个后退按钮,并按上述方式实现功能.用户仍然可以使用硬件后退按钮来实现相同的功能.因此,您将提供相同的冗余功能.