返回主要活动时传递数据(意图)我做错了什么?

时间:2013-12-23 14:03:04

标签: android android-intent

我是android的新手。这可能是最简单的问题!!但我无法弄清楚这里出了什么问题,

我试图创建一个通过intent传递值的基本示例。所以当我关闭我的第二个Activity时,我需要将数据传递给Main Activity是代码

IntentTest1(MainActivity)

public void onClick(View arg0) {
            // TODO Auto-generated method stub
MyClass.myToast("Clicked",getApplicationContext());
Intent myIntent = newIntent(getApplicationContext(),SecondPage.class);
startActivityForResult(myIntent,0); 
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub

    if(requestCode == 0 && resultCode == RESULT_OK)
        if(data.hasExtra("title"))
        {
    MyClass.myToast(""+resultCode+""+requestCode, getApplicationContext());
    String str = data.getExtras().getString("title").toString();
    titleText.setText(str); 
        }
    super.onActivityResult(requestCode, resultCode, data);
}

SeconPage

public void finish()
{

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);
returnIntent.putExtra("Welcome Back!!","title");
setResult(RESULT_OK, returnIntent);
    //      below was for tosting and it works!!
MyClass.myToast("finally",getApplicationContext());
super.finish();
}

我认为收到意图有一些错误,我无法弄明白。 需要答案和建议 提前谢谢

3 个答案:

答案 0 :(得分:2)

第一个问题是当您创建Intent以发送回第一个Activity时。由于您使用的是startActivityForResult(),因此您希望使用空构造函数。所以改变

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);

Intent returnIntent = new Intent();

第二个问题是你的key/value后面有Extras对。使用key等寻找的getStringExtra()应该是该对中的第一个。所以这个

returnIntent.putExtra("Welcome Back!!","title");

应该是

returnIntent.putExtra("title", "Welcome Back!!");

关闭-主题

我会考虑使用相关名称作为params。例如,我会从

更改您的onClick()
public void onClick(View arg0)

public void onClick(View view)  

viewv或类似的东西更有意义,因为参数实际上是一个视图,它会更具可读性

我还建议您使用Activity Context作为Intent,您可以从参数(View)传递到onClick()。所以把它改成

public void onClick(View v) 
{
     MyClass.myToast("Clicked",getApplicationContext());
     Intent myIntent = newIntent(v.getContext(),SecondPage.class);
     startActivityForResult(myIntent,0); 

答案 1 :(得分:1)

你必须使用

if(data.hasExtra("Welcome Back!!"))

而不是

if(data.hasExtra("title")) 
onActivityResult中的

Welcome Back!!是密钥,title是附加内容中该密钥的值。

答案 2 :(得分:0)

试试这段代码:

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);
returnIntent.putExtra("Key name here in ur case title","Value name");
setResult(RESULT_OK, returnIntent);
//      below was for tosting and it works!!
 MyClass.myToast("finally",getApplicationContext());
super.finish();

}