我的頂級活動顯示引號,並且它可以啓動添加引號的子活動。所有這些都有效,但是我想在添加一個報價之後做到這一點,它會更新爲新的報價。我有一個方法setLatestQuote()
,它通過動畫設置文本(通過TextSwitcher
)並用另一個動畫改變背景顏色。如何從兒童活動返回後在我的頂級活動中運行代碼?
我不確定如何讓代碼在我們從活動返回後運行。我試着重寫onActivityResult()
,它似乎在它實際返回到主要活動之前運行所有代碼。
我啓動子的活性,像這樣:
Intent intent = new Intent(Quotr.this, AddQuote.class);
startActivityForResult(intent, 0);
overridePendingTransition(R.anim.pull_in_from_bottom, R.anim.pullback);
那麼這種活動將設定它的返回值,如果添加了報價或者如果用戶取消了,這是我的onActivityResult()
方法取決於:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case 0:
if(resultCode == RESULT_OK) {
View view = findViewById(R.id.touch);
Snackbar.make(view, "Quote added", Snackbar.LENGTH_SHORT);
current = quoteList.size() - 1;
setLatestQuote();
}
break;
default:
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
}
}
但正如我所提到的,它似乎在兒童活動關閉時運行所有代碼,而不是在父活動打開後運行,因此Snackbar不顯示,引號只能傳送到視圖中。
我很確定onResume()
一旦活動啓動,但從我的理解,onResume將推出更多的不僅僅是當我從這個兒童活動返回時,如onCreate()
,並且我不希望此代碼運行然後。只有在我從這個具體的兒童活動回來後。
你之前完成設置 「的setResult(RESULT_OK)」 在您的AddQuote活動? –
是的,onActivityResult代碼運行良好,只是運行得太早。我用Toast通知對它進行了測試,並且它的所有功能都能正常工作,但它不適用於Snackbar並且不能用於播放我的動畫,因爲代碼運行時主要活動尚未啓動。 –
您可以使用onActivityResult調用在您的活動中設置一個標誌,然後檢查onResume中的標誌以運行您的動畫等......這樣您就可以控制並且正在利用活動的生命週期。 –