我是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();
}
我认为收到意图有一些错误,我无法弄明白。 需要答案和建议 提前谢谢
答案 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)
view
,v
或类似的东西更有意义,因为参数实际上是一个视图,它会更具可读性
我还建议您使用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();
}