Android 从OnClickListener重新加载或刷新活动不工作

Android 从OnClickListener重新加载或刷新活动不工作,android,android-activity,Android,Android Activity,在我的“ArticleActivity”(用户阅读文章的地方)中,我有一个“相关文章”的列表。当用户单击一篇文章时,它应该重新加载或刷新ArticleActivity以显示他们单击的文章,而不是他们刚刚阅读的文章 我在网上找到了很多答案,并尝试了大约492个。。。我可以让它启动不同的活动,但无法让它重新启动当前活动 我的最新尝试: //RELATED ARTICLE CLICK relatedArticleClickListener = new OnClickListener()

在我的“ArticleActivity”(用户阅读文章的地方)中,我有一个“相关文章”的列表。当用户单击一篇文章时,它应该重新加载或刷新ArticleActivity以显示他们单击的文章,而不是他们刚刚阅读的文章

我在网上找到了很多答案,并尝试了大约492个。。。我可以让它启动不同的活动,但无法让它重新启动当前活动

我的最新尝试:

    //RELATED ARTICLE CLICK
    relatedArticleClickListener = new OnClickListener()
    {
        public void onClick(View v) {
            Log.d("MYLOG", "related article clicked " + v.getId());
            Intent myIntent = new Intent(v.getContext(), ArticleActivity.class);
            myIntent.putExtra("id", v.getId());
            startActivity(myIntent);
            finish();
        }   
    };
更新:

这可能与具有以下内容的ArticleActivity有关:
android:launchMode=“singleTask”
?我需要它在那里,但也需要能够重新加载一篇新文章的活动

如果我将
ArticleActivity.class
更改为
MainActivity.class
,并使所有其余代码保持完全相同,它将转到MainActivity。

替换这些行

finish();
startActivity(myIntent);
用这些

startActivity(myIntent);
finish();

你应该使用意向标志这对你有帮助

请参阅此链接


阅读您的更新,进一步了解您的问题。该行为与您的
singleTask
指定相关。在
singleTask
下,如果活动已经存在,则不会重新创建它,而是调用它的
onNewIntent()
方法来处理新的意图。有关更多信息,请参阅


您真的需要
单任务
?因为移除它也会导致你的问题消失。它还将允许您阅读的文章位于后堆栈中,因此,当您的用户完成一篇文章并按back键时,他们将返回到第一篇文章。

我不确定,但我认为没有必要在开始意图之前完成活动……而且如果您能够解释更多实际发生的事情,而不是开始活动,那会更好。是否真的需要重新启动活动活动?在大多数情况下,您应该能够重构代码,以便可以直接从OnClickListener调用活动初始启动期间发生的逻辑。这将比有意图的完整往返旅行更有效。@Dave Try
intent myIntent=newintent(ArticleActivity.This,ArticleActivity.class)
@user1132647-我相信你是对的-一旦我开始工作并有时间再次访问,我一定会尝试。@Deepzz-尝试过-仍然没有任何结果:(然后删除finish()行。我填充刷新您的活动,但不会完成它。@戴夫:您使用onNewIntent尝试过吗?仍然没有任何作用。但是,如果我将其更改为MainActivity(而不是ArticleActivity),则它会返回到MainActivity。这听起来很好-但是当我尝试它时,标志“活动”\u CLEAR\u TOP显示为错误。“无法将标志\活动\清除\顶部解析为变量“剪切和粘贴错误,请参见上文,但查看您的编辑,我想我误解了您的问题。您的意思是您根本没有收到第二篇文章?我想您不想发布第二份意图。我尝试了使用
intent.FLAG…
addFlags()
而不是
setFlags())
,但运气不好。正确,当我点击它时,什么都没有发生(除了我得到显示点击发生的日志)是的,那个解决方案是行不通的,我认为你有一个不同的问题。重新阅读你的编辑,StutLaseCo会引起你的问题。请参阅上面编辑的答案——基本上你需要执行<代码> OnnWiNeTiNe/Cuth>来处理刷新,或者仔细考虑“代码> StuttLasks<代码>的需要。