6

我有一个具有菜单的应用程序,根据您在菜单中按下的按钮,会打开一个新活动。我想在每个屏幕上都有一个后退按钮,可以将您带到上一个屏幕,所以我想知道我该怎么做?

这是我使用的一些有效的代码:

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

            @Override
            public void onClick(View v) {


                finish();

            }
        });

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

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

4

6 回答 6

9

只是一个想法

创建一个扩展 Activity 的 baseClass。在那里声明

    @Override
    public void onClick(View v) {
         super.onBackPressed(); // or super.finish();
    }

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

   android:onClick="onClick"

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

于 2013-04-19T11:14:35.100 回答
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);
    }
}
于 2013-04-19T11:16:48.953 回答
5

I would suggest against having a custom back button. Android has a hardware back button. Pressing the haradware back button will navigate to the previous.

I don't think you need a custom back button. I don't think its a good programming practice to override the default behaviour.

You create a backbutton in your activity and implementing the functionality as you have done above. Still the user can use the hardware back button for the same functionality. So you would be providing the same functionality which is redundant.

于 2013-04-19T11:40:01.197 回答
1

所有 android 设备上都有一个硬件后退按钮,它完全按照您的代码行执行,除非被覆盖以执行其他操作。

你也可以参考这个答案

于 2013-04-19T11:15:10.927 回答
0

我在使用后退按钮“取消”和主屏幕“homeActivity”时遇到了类似的问题。我最终用这个解决了它:

CancelButton = (Button) findViewById(R.id.cancel_button);
        CancelButton.setOnClickListener(new OnClickListener() {

             public void onClick(View view) {
                 Intent homeActivity = new Intent(getApplicationContext(), DeviceListActivity.class);

                 startActivity(homeActivity);
                 finish();  
            }
        });
于 2021-11-17T21:09:40.380 回答
0

在科特林

 backButton!!.setOnClickListener(View.OnClickListener {
 onBackPressed()
  })
于 2021-12-08T11:44:46.487 回答