2017-04-25 57 views
0

我對Android相當陌生並且面臨一個問題。Android - 打開Activity並等待Result繼續之前調用類

我有一個A類,我想從哪裏調用另一個活動。我發現一些帖子說,沒有辦法暫停調用Activity並等待結果。

public class A extends AppCompatActivity { 
    [...] 
    private List<String> list = new ArrayList<String>(); 

    private void doSomething() { 
     list.add("a"); 
     list.add("b"); 
     for(String tmp:list) { 
      Intent intent = new Intent(this, OtherActivity.class); 
      intent.putStringExtra("TAG", tmp); 
      startActivityForResult(intent, 1); 
     } 
    } 

這不是一個完整的例子,但基本上是我面臨的問題。

我有一個循環,並嘗試打開另一個活動。當我開始「OtherActivity」時,循環不停止。 我看到的第一件事是列表最後一個元素的OtherActivity(這裏是String「b」)。當我完成這個活動時,我看到OtherActivity的字符串「a」的順序錯誤。

我認爲這是一個回調,但我不知道如何實現它,因爲回調處理程序不會在循環內。

同樣,我不確定回調是否是一個好主意,因爲很多人說我不應該暫停這個子活動的「調用」活動。

+0

您是否正在嘗試將數據從一項活動發送到另一項活動? – Denny

+0

傑,我忘了添加該行。 但這不是我的主要問題。問題是,因爲有作爲阿卜杜勒Kawee說 – Entrail

回答

1

你這樣做是完全錯誤的,如果你想將數據發送到其他活動,做一些工作,然後得到的結果,我寧願送全數據列表,做的工作,然後得到的數據該活動,你不應該循環做。通過它是作爲意圖或將其保存在數據庫中,然後從數據庫中檢索。

+0

感謝您的答覆:)但是我OtherActivity只是一個傳遞的對象不工作與名單中的對象列表循環產生儘可能多的新的活動。 – Entrail

+0

這不是一個問題,根據您的需要更改您的其他活動。您編寫代碼的方式將會在不等待結果的情況下調用活動,這意味着將創建許多活動。 –

0

如果你想串的整個列表傳遞到其他活動,我建議你這樣做

可以傳遞一個ArrayList以同樣的方式,如果E型是 Serializable接口。

您可以調用putExtra(String name,Serializable value) 意圖存儲,getSerializableExtra(String name)用於檢索。

例子:

ArrayList<String> myList = new ArrayList<String>(); 
intent.putExtra("mylist", myList); 

在其他活動:

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist"); 

請注意,序列化可能會導致性能問題:它需要時間和大量的對象將被分配(因此,必須被垃圾收集)

來源:Passing a List from one Activity to another

或者按照Abdul的建議,將數據保存到數據庫並從其他活動中檢索數據

相關問題