Android:以前活动的额外内容为空

时间:2015-11-02 00:54:24

标签: android android-intent

我正在尝试将一些信息发送回我的主要活动,但价值一直变为空。我知道我的第二个活动(传递信息的那个)中的信息不是空的,因为我手头打印出来。

这就是我所拥有的:

主要活动:

    Intent i = new Intent(this, 2ndActivity.class);
       startActivity(i);
      //  startActivityForResult(i, 0); I have tried this too, but same result
        onActivityResult(1, RESULT_OK, i);
    }

//allow to receive info from 2nd activity
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
           ArrayList<String> list= data.getStringArrayListExtra("info");
            if(list== null)
                System.out.println("ITS NULL\n.\n.");
            else
                System.out.println("ITS ALL GOOOD!\n.\n.");
        }
    }
}

第二项活动

Intent intent = new Intent();//go back to previous intent 
intent.putStringArrayListExtra("info", selectedItems);//selectedItems is an ArrayList of String
setResult(RESULT_OK, intent);
finish();//go back to the previous page

3 个答案:

答案 0 :(得分:0)

在开始活动之前,请执行以下操作:

    i.putExtra("STRINGVARIABLENAME", stringvalue);

在第二项活动中通过这样做来调用它:

    String boobis = getIntent.getStringExtra("STRINGVARIABLENAME"); //Has to be the same as above

现在可以在任何地方使用变量。

答案 1 :(得分:0)

在您的第一个活动中,为什么要手动调用onActivityResult?你不应该这样做。你应该只调用startActivityForResult(i,0),然后等待第二个活动完成,onActivityResult将自动被调用。并且请求代码需要匹配您在startActivityForResult中传递的那个,在此实例中为0。

答案 2 :(得分:0)

替换

  ` startActivity(i); 
  //  startActivityForResult(i, 0); I have tried this too, but same result 
    onActivityResult(1, RESULT_OK, i); `

startActivityForResult(i,1)

应该有用。