我有一個名爲NfcScannerActivity的主菜單屏幕的應用程序。目前它在清單中沒有啓動模式(標準)。如果您點擊getRota,它會將您轉到清單中定義爲'singleTask'的rota屏幕,它只是一個webcall數據的列表視圖。intent and onNewIntent
在rota屏幕中,您可以從optionsMenu欄中單擊nextRota。發生這種情況時,將啓動一個指定菜單屏幕(NfcScannerActivity)的意圖,因爲這是進行網絡調用以獲取第二天的rota數據的地方。一旦數據被檢索到,rota屏幕再次啓動。
所有這一切都很好,但我相信,由於在任務中有多個菜單屏幕實例,應用程序中存在一些問題。如果我將NfcScannerActivity指定爲'SingleTask',那麼當您單擊下一個Rota時,它將停留在菜單屏幕上,就好像它沒有處理「NEXT_ROTA」意圖操作一樣。
據我所知,我可能必須重寫NfcScannerActivity活動中的onNewIntent。
這是如何完成的?我試過以下。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
。
這似乎無法處理'NEXT_ROTA'意圖操作。謝謝馬特。
[EDIT1]
這是我在羅塔活動,當用戶從選項菜單中點擊next_rota。
Intent i = new Intent(this, NfcscannerActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.putExtra("nextRota", nextDay);
i.setAction("NEXT_ROTA");
startActivity(i);
。
然後在oncreate的NfcScannerActivity我有以下。
if(intent.getAction().equalsIgnoreCase("NEXT_ROTA")){
Log.e(TAG, "next rota action");
String date = intent.getStringExtra("nextRota");
getNextRota(date);
}
。
getNextRota(日期)調用一個AsyncTask來使webcall獲得下一個rota的數據。在onPostExecute它執行以下操作。
Intent intent = new Intent(NfcscannerActivity.this,
GetRota.class);
Bundle b = new Bundle();
b.putSerializable("rotaArray", rotaArray);
intent.putExtra("rotaArrayBundle", b);
startActivity(intent);
。
所以我已經在onCreate中處理NfcScannerActivity中的'NEXT_ROTA'intent動作。我必須在onNewIntent中做同樣的事嗎?
嗨,你能看看我的更新請。謝謝 – turtleboy
是的,你必須在onNewIntent中做同樣的事情,當調用onNewIntent時不會調用onCreate。 – triggs
好的非常感謝您的幫助 – turtleboy