我正在学习机器人并且好奇地知道startActivityForResult()
也包含startActivity()
的属性,即除了从被调用活动接收数据之外,它是否可以用于发送startActivity()
之类的数据?
这是代码:
SendData活动:
Intent data= new Intent(SendData.this, RecieveData.class);
Bundle check = new Bundle();
check.putString("UmerData", cheese);
medt.setText(cheese);
data.putExtras(check);
startActivityForResult(data, 5);
应该接收此活动中的数据(RecieveData Activity)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recievedata);
Initializek();
Bundle got = getIntent().getExtras();
String ss= got.getString("UmerData");
if(getIntent()!=null && ss!=null ) {
rt1.setText("Is not Null");
}
}
非常感谢您的帮助!
由于
答案 0 :(得分:1)
使用startActivityForResult()
时,您还必须在活动中创建一个名为onActivityResult()
的{{1}}方法。 startActivityForResult()
是您可以访问由onActivityResult()
存储的Intent的结果。
在随后启动的Activity
中,您必须致电Activity
以存储您存储数据的setResult()
。
请仔细阅读:http://developer.android.com/reference/android/app/Activity.html#StartingActivities
修改:误读您的问题。为了通过一组选项,我会使用这个重载:
答案 1 :(得分:0)
是的,startActivity& startActivityForResult,都将intent作为param。您可以将意图内的发布数据捆绑并传递给目标活动。
答案 2 :(得分:0)
我在 Xamarin Android 中工作,所以代码是 C#,但我遇到了同样的问题,只是我在不同的应用程序之间发送。我最终让它工作了,所以这是我的例子。
var intent = new Intent();
intent.SetComponent(new ComponentName("com.company.packageName", "com.company.packageName.activityName"));
intent.PutExtra(Intent.ExtraText, message);
StartActivityForResult(intent, 1);
// in app being started
protected override void OnResume()
{
base.OnResume();
Intent intent = Intent; // Equivalent to getIntent()
if (intent != null)
{
string str = intent.GetStringExtra(Intent.ExtraText);
if (str != null)
{
// Do stuff with str
}
else
{
//Show Error
}
}
else
{
//Show Error
}
}