2013-01-11 130 views
0

在我的「ArticleActivity」(用戶閱讀文章的位置)中,我有一個「相關文章」的列表。當用戶點擊一個,它應該重新加載或刷新ArticleActivity以顯示他們點擊的文章,而不是他們剛剛閱讀的文章。重新加載或刷新OnClickListener中的活動不起作用

我在網上發現了許多很多答案,並嘗試了大約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。

+0

我不確定,但我認爲沒有必要在開始意向之前完成活動......並且如果您能解釋更多真正發生的事情而不是開始活動,那將會更好。 – Pragnani

+0

真的有必要重新開展活動嗎?在大多數情況下,您應該能夠重構代碼,以便在首次啓動活動期間發生的邏輯可以直接從您的OnClickListener調用。這將是一個有意向的全程往返更有效率。 –

+0

@Dave嘗試'意圖myIntent =新的意圖(ArticleActivity.this,ArticleActivity.class);' – Deepzz

回答

1

更換這些線路

finish(); 
startActivity(myIntent); 

這些

startActivity(myIntent); 
finish(); 
+0

嘗試過這已經 - 沒有運氣。 – Dave

+0

然後刪除完成()line.i填充刷新您的活動,但不會完成它。 –

+0

@Dave:你用onNewIntent來試試嗎? –

0

閱讀您的更新,進一步瞭解你的問題後。行爲與您的指定singleTask有關。在singleTask下,如果該活動已存在,則不會重新創建該活動,而是會調用它的onNewIntent()方法來處理新的意圖。有關更多信息,請參見Activity.launchmode

你真的需要singleTask嗎?因爲刪除它也會導致你的問題消失。它還可以讓你閱讀的文章在後面的堆棧中,所以當你的用戶完成一篇文章並按下後退鍵時,它會將它們帶回第一篇文章。

+0

這聽起來不錯 - 但是當我嘗試它時,FLAG_ACTIVITY_CLEAR_TOP顯示爲錯誤。 「FLAG_ACTIVITY_CLEAR_TOP無法解析爲變量」 – Dave

+0

剪切和粘貼錯誤,請參閱上文,但看着您的編輯,我想我誤解了您的問題。你的意思是你從來沒有得到第二篇文章?我以爲你不想推出你的意圖的第二個副本。 – iagreen

+0

我試着用'Intent.FLAG ...'和'addFlags()'代替'setFlags()',但沒有運氣。正確的,當我點擊它時沒有發生(除非我的日誌顯示點擊發生)。 – Dave