2017-04-25 88 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的建议,将数据保存到数据库并从其他活动中检索数据

相关问题