Java Android-关闭第一个活动
我创建了一个android应用程序,它有两个活动,一个是Java Android-关闭第一个活动,java,android,android-activity,Java,Android,Android Activity,我创建了一个android应用程序,它有两个活动,一个是MainActivity,另一个是Articleactivity 在此应用程序中,您可以打开无限数量的活动。所以它就像一个文章应用程序,在一篇文章里面还有其他文章,所以你可以无限量地关注文章。每篇文章都会打开一个新的文章活动 现在我想做的是:当第10篇文章打开时,我想关闭第一篇文章活动(而不是main活动) 我也读过这篇文章,但它只在您有不同的活动(即ActivityA、ActivityB、ActivityC…)时有效 有什么方法可以做到这
MainActivity
,另一个是Article
activity
在此应用程序中,您可以打开无限数量的活动。所以它就像一个文章应用程序,在一篇文章里面还有其他文章,所以你可以无限量地关注文章。每篇文章都会打开一个新的文章
活动
现在我想做的是:当第10篇文章
打开时,我想关闭第一篇文章
活动(而不是main活动
)
我也读过这篇文章,但它只在您有不同的活动(即ActivityA、ActivityB、ActivityC…)时有效
有什么方法可以做到这一点吗?在打开第10篇文章时,请执行以下操作:
Intent intent = new Intent(this,Your_Article.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
或者,如果您只想关闭某个特定的活动,请获取该活动的实例,并使用finish()关闭它。这是一种黑客攻击,只是为了让它工作,但您可能想尝试从描述中删除片段
public class ActivityHandler {
private static ActivityHandler uniqueInstance;
private static List<Activity> mListActivity;
private static int SIZE_LIMIT = 10;
public static ActivityHandler getInstance() {
if (uniqueInstance == null) {
synchronized (ActivityHandler.class) {
if (uniqueInstance == null) {
uniqueInstance = new ActivityHandler();
}
}
}
return uniqueInstance;
}
private Activityhandler() {
if (mListActivity == null ) {
mListActivity = new ArrayList();
}
}
public static void add (Activity activity){
mListActivity.add(activity);
if (mListActivity.size() > 10){
Activity firstActivity = mListActivity.remove(0);
firstActivity.finish();
}
}
}
如果您在片段上构建应用程序,那么在将片段添加到后堆栈并删除旧标记时,只需使用计数器即可。考虑一下:我看到我可以在
片段
中完成它,但实际上我没有使用它们,我现在使用的是活动
。我知道,我建议您使用片段,因为它更适合您尝试做的事情。对最终用户来说,这不会有什么不同,只是通过编程实现的。有点像这样的场景:“我用叉子喝汤,汤总是溢出来,我怎么才能去掉这些洞?”——“用勺子?”——“我没有用勺子,我在用叉子。”;)有时还有其他更适合手头任务的工具。:)嵌套片段应该可以,只需使用最新的兼容性库即可。此外,修复代码所需的时间比查找和编写适当的黑客(可靠且经得起未来考验)要少得多,下面答案中的活动标志对您没有帮助,因为它会清除您活动的所有实例(不会有10个堆栈),对非顶级活动调用finish是一种不好的做法。所以,祝你好运。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.article_activity);
ActivityHandler.getInstance().add(this);
}