操作栏上的“后退”按钮 - Android。怎么去“回来”?

问题描述 投票:7回答:2

enter image description here

Action Bar

我说的是(图中的1号),带有小箭头的按钮和应用程序图标以及屏幕的左上角。当我们选择“黑色活动”模板时会自动定义它。

我的应用程序有一个非常庞大的层次结构图,现在有大约25个活动。我基本上只是展示了一些教程,可以根据类别导航到它。

现在每个屏幕上都有动作栏上的“后退”(?)按钮,我确实希望保留它。代码显示没有错误,但当我实际按下该按钮时,应用程序停止工作。我想要的是用我在图像中显示的那个(Number 1)按钮复制实际的后退按钮功能。当我按下它时,最顶部的屏幕应该关闭,最后一个屏幕应该打开。只需关闭屏幕。

我尝试了什么:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:

            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

这是将错误按钮与操作栏一起膨胀的功能。我试图替换整个代码,并调用“完成”功能,但失败了。我无法找到专门针对最左上方按钮的功能......

当触摸此按钮时,我希望关闭堆栈中的最顶层屏幕(前景中的一个)。这该怎么做 ?

java android eclipse button action
2个回答
31
投票

我认为最简单的方法如下:

我假设从活动A你开始活动B。现在从活动B你想回到活动A按下操作栏上的左上方按钮。只需从那里打电话给this.finish()ActivityName.this.finish()

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

这应该完成您当前的活动。但是,如果您有很多活动,那么您可能必须在所有活动中执行此操作。为了避免这种努力,你可以让一个类让它称之为AbstractActivity;扩展Activity。然后,您可以扩展所有其他活动类以扩展该类(AbstractActivity)。在AbstractActivity内你可以把上面的代码。所以现在这段代码对你的所有活动都有效,并且将为所有这些活动实现该功能。基本上这种事情(Inheritance)可以在任何时候使用,当有一些常见的功能适用于你的许多类。

如果您收到任何错误,请在需要进一步帮助时发布您的LogCat。希望这对你有所帮助。


4
投票

只给出@shobhit puri给出的基本代码...

用于调用操作栏后退按钮..在onCreate()方法中添加以下代码以及onOptionsItemSelected ....

protected void onCreate(Bundle savedInstanceState) 
{
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true);
    super.onCreate(savedInstanceState);     
    setContentView(R.layout.activity_information);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        this.finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
© www.soinside.com 2019 - 2024. All rights reserved.