Android工具栏:如何在按下返回箭头时返回上一个活动?

5

我有一个名为Place的活动。

我从它之前的名为City的活动来到Place活动。

我使用以下代码在Place活动的工具栏中添加了返回按钮:

    Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true)

我希望将后退按钮设置为返回到City活动页面。

但是,City活动页面需要传递一些参数。

那么如何告诉后退按钮返回到City活动页面,而无需传递参数。


2
在返回按钮的clicklistner上调用finish()。请参阅此处的精美教程http://coderzpassion.com/。 - Jagjit Singh
1
它成功了。谢谢。 - Santhosh
5个回答

23
根据您的问题,您应该使用finish()

当您的 Activity 完成且应该关闭时,请调用此方法。要完成一个 Activity,应该调用 finish() 方法。这适用于当前活动的 Activity。

示例

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) // Press Back Icon
    {
        finish();
    }

    return super.onOptionsItemSelected(item);
}

7
在AndroidManifest.xml文件中,添加标签android:parentActivityName,并将其指向您希望在返回按钮上转到的位置。在java中,您需要调用。
 getActionBar().setDisplayHomeAsUpEnabled(true);

您已经完成了方法的实现。这将有所帮助。

<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
    android:name="com.example.myfirstapp.MainActivity" ...>
    ...
</activity>
<!-- A child of the main activity -->
<activity
    android:name="com.example.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>

正如我所提到的,我的城市活动需要传递一些参数。如果我直接链接,由于缺少某些参数,我的活动将不会显示任何内容。 - Santhosh

5
在你的backButton中,只需要调用finish();,就可以关闭Activity而不需要向其他Activity传递参数。

在通过finish()返回到City活动后,如何在City活动中取消选择导航抽屉视图中的菜单项。 - Santhosh
当您从城市活动转到地点活动时,您的城市活动将进入onPause()状态,并且地点将出现在UI上。当您按下返回按钮时,您将关闭地点活动并带回到城市,在您的onPause()方法中只需选择或取消所需内容即可。 - Kristiyan Varbanov

3
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

虽然这段代码可能解决了 OP 的问题,但是为什么要这样做还不太清楚。我建议加一些上下文说明为什么需要这样做。 - GergelyPolonkai

2
您可以简单地使用以下代码:
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true)

如何在工具栏上设置返回按钮:

在清单文件中:

<activity
    android:name="Your Second Activity"
    android:parentActivityName="Your First Activity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="Your First Activity" />
</activity>

最后使用:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) 
{
   NavUtils.navigateUpFromSameTask(this);
}

return super.onOptionsItemSelected(item);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接