2

我正在学习 android 并且很想知道是否也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");
    }
}

您的帮助将不胜感激!

谢谢

4

3 回答 3

0

是的,startActivity 和 startActivityForResult,都将意图作为参数。您可以在 Intent 中捆绑启动数据并将其传递给目标活动。

于 2012-08-14T21:40:10.973 回答
0

使用startActivityForResult()的时候,还得onActivityResult()在Activity里面创建一个调用的方法startActivityForResult()onActivityResult()是您可以访问由Activity您开始存储的 Intent 以获取结果的地方。

Activity然后开始,您必须调用setResult()来存储您存储数据的那个Intent

阅读此内容:http: //developer.android.com/reference/android/app/Activity.html#StartingActivities

编辑:误读你的问题。为了传递一个 Bundle 选项,我会使用这个重载:

startActivity(Intent, int, Bundle)

于 2012-08-14T22:00:14.360 回答
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
     }
}

于 2021-04-02T22:54:51.900 回答