[英]clarification on how send data to previous Activity using startActivityForResult
[英]Can startActivityForResult() send data?
我正在学习 android 并且很想知道startActivityForResult()
是否也包含startActivity()
() 的属性,即除了从被调用的活动接收数据之外,它是否可以用来发送像startActivity()
这样的数据?
这是代码:
发送数据活动:
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");
}
}
您的帮助将不胜感激!
谢谢
是的,startActivity 和 startActivityForResult,都将意图作为参数。 您可以在 Intent 中捆绑启动数据并将其传递给目标活动。
当您使用startActivityForResult()
时,您还必须在调用startActivityForResult()
的 Activity 中创建一个onActivityResult()
方法。 onActivityResult()
是您可以访问由您启动的Activity
存储的 Intent 以获取结果的地方。
在随后启动的Activity
中,您必须调用setResult()
来存储存储数据的Intent
。
阅读此内容:http: //developer.android.com/reference/android/app/Activity.html#StartingActivities
编辑:误读你的问题。 为了传递一个 Bundle 选项,我会使用这个重载:
我在 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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.