2017-06-29 53 views
0

我有這樣一段代碼基本上應在其啓動的活動和行爲,例如一個Android活動和行爲,設置其標題:啓動後,它一旦打開

void launchAnActivityAndSetItsTitle() { 
    context.startActivity(intent); 
    activityMonitor.getCurrentActivity().getSupportActionBar().setTitle(title); 
} 

的活動監視器變量是一個組件其中包含當前前臺活動的參考。 它被設置在應用中每個活動的onResume()。

當我運行這段代碼時,活動僅在該方法結束後才啓動,這會使第二個命令無用,因爲它設置了上一個活動的標題,而不是新啓動的標題。在設置標題之前添加延遲並沒有幫助。

當我調試它時,我看到第二個 命令的代碼在所需新活動的onCreate()之前始終被調用(不管我在兩者之間設置了什麼延遲)。我的問題是爲什麼。

感謝

編輯 - 我需要更好地解釋:

我知道如何將數據傳遞到一個新的活動。我有興趣瞭解這個特定時間問題的原因 - 爲什麼在這個代碼塊/方法結束之後,活動始終啓動。

根據我的設計,此方法駐留在一個單獨的模塊中,該模塊僅負責執行url(根據url匹配器轉換爲特定的意圖),並允許在網址的執行,即活動啓動後。

在本例中,回調實際上是對嘗試設置當前活動標題的方法的調用(回調方法駐留在應用程序模塊中並作爲參數傳遞給「url executor」模塊)。

所以,現在我解釋了我對這種通用方法的需求,也許你可以給我提示你如何去做,而不會陷入這個「活動還沒有真正推出」的問題。 謝謝。

+1

啓動活動是Android中的一個異步操作 - 調用'startActivity()'只是安排將來啓動一段時間的活動。您或者需要將數據傳遞給活動,或者讓已啓動的活動與原始活動進行交流。 – adelphus

回答

1

如果你想修改該活動的東西的意圖,我會建議傳遞一個ExtraIntent沿並獲得額外的新活動OnCreate

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.xxxxxxxx); 
    Intent i = getIntent(); 
    setTitle(i.getStringExtra("title"); 

爲了把一個額外的內部被啓動一個Intent使用intent.putExtra("title", "newTitle");

+0

謝謝,但我知道如何使用intent的額外功能將數據傳遞給新的活動。我更新了我的問題以更好地解釋我的需要。 – TheCodeFather

相關問題