从堆栈返回特定活动

问题描述 投票:8回答:3

我正在尝试做类似文件管理器的事情。在行动栏我想做“谷歌驱动”应用程序中的文件夹导航。我需要创建方法,可以从最后的数字或类似的东西前往活动。

例:

所以,如果我有堆栈:[1] - > [2] - > [3] - > [4] - > [5]

我需要去第二个:所以我需要从堆栈中删除[3],[4]和[5]并转到[2]。

所有活动都是一个类ContentActivity.java。

怎么可能呢?

更新:

一些代码我如何开始活动:

public class ContentActivity extends Activity implements AdapterView.OnItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        Intent intent = getIntent();
        String folderToOpen = intent.getStringExtra("folderName");
        fillList(folderToOpen);
    }


    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        ...
        Intent intent = new Intent(ContentList.this, ContentList.class);
        intent.putExtra("folderName", item.getName());
        startActivity(intent);
    }
}
android android-activity activity-manager
3个回答
21
投票

假设Activity2是你想去的第二个活动,

试试这个:

Intent intent = new Intent(this,Activity2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

根据Android Documentation关于FLAG_ACTIVITY_CLEAR_TOP

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图。


6
投票

通过清单跳过活动属性

这取决于需要,但如果我们只想在回流中跳过活动,那么有用的可以是在Manifest中从历史中删除此活动。

[1] - > [2] - > [3] - 正常流量

[1] < - [3] - 回流

然后为[2]活动我们可以在Manifest中设置noHistory属性:

<activity
android:name=".SecondActivity"
android:noHistory="true" />

谢谢这种方法,我们的[2]活动永远不会在回流中启动。


使用Intent Flag

从历史堆栈中删除活动并不总是好主意,例如,如果我们的Activity有时需要回流而有时不需要,那么启动想要的活动我们需要在intent中设置标志:

Intent intent = new Intent(this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

而且非常重要 - 在FirstAop中,在singleTop上显示设置启动模式。

<activity
   android:name=".FirstActivity"
   android:launchMode="singleTop" />

如果没有launchMode,将重新创建属性活动。


0
投票

用这个

Intent intent = new Intent(this,Activity2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
© www.soinside.com 2019 - 2024. All rights reserved.