Android:在两个活动之间切换并共享信息

3

这是一个基础问题,但我需要一些帮助。

我有两个活动:actA和actB。 当在actA中时,我想启动actB并传递一个字符串,然后我想结束actB并返回另一个字符串给actA(我不想进入actA的onCreate()方法,我更愿意将此值返回给actA中的某个方法,以便它可以使用来自actB的字符串。

需要帮助。

4个回答

3
From A.java:
Intent myintentB=new Intent(A.this, B.class).putExtra("<StringName>", "Value");
    startActivityForResult(myintentB, 3);

    from B.java:

    Intent myintentA=new Intent(B.this, A.class).putExtra("<StringName>", "Value"); 
    finish();
    setResult(3, myintentA);


    In A.java
@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            String result_string=data.getStringExtra("<StringName>");
        }

在您的“A”活动中使用onActivityResult()来处理结果。 - DecodeGnome
什么是测试,数字3的含义是什么? - Belgi
3是requestCode。假设您使用startActivityForResult()超过一次,则此requestCode将成为onActivityResult中的标识符。 - Shailendra Singh Rajawat

2
在活动 A 中:
Intent intent = new Intent();
intent.setClass (getApplicationContext(), ActB.class) ;
intent.putExtra ("data1","NEW STRING") ;
context.startActivityForResult(intent) ;

在活动B的onCreate方法中:

Intent intent = getIntent() ;
if (intent.hasExtra("data1") )
String dataSent = intent.getStringExtra("data1") ;

在发送数据回来时:

Intent intent = new Intent() ;
intent.putExtra ("Return" , "RETURN STRING") ;
setResult(RESULT_OK, intent) ;
finish() ;

在Activity A中:(onActivityResult) [您需要重写此方法]
if (data.hasExtra("Return"))
String data1 = data.getStringExtra("Return");

我尝试在actA中使用代码的第一部分,但是出现了两个错误:
  1. 类型 Intent 中的方法 setClass(Context, Class<?>) 对于参数(Class<CreateMessageActivity>)不适用。 2.context 无法解析。
- Belgi
对于未解析的上下文,请使用getApplicationContext()。对于setClass,根据需要包含上下文。 - Vinay

0

-1
就你的第一个问题而言,您可以在实际创建 Intent 之前使用方法 intentname.putExtra("extravalue", value); 给新的 Intent 提供额外的值。然后,在新创建的 Activity 中读取该值。我知道我解释得很糟糕,但我希望您能从我制作的应用程序中的这段代码中得到这个想法。

ListLinks.java:

            // Pass the value of the item URL to the linkviewer when a link is clicked
        Intent openLink = new Intent(this, LinkView.class);
        openLink.putExtra("url" , item.URL);
        startActivity(openLink);

LinkView.java

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.linkview);

    Bundle bun = getIntent().getExtras();
    String url = bun.getString("url");

关于如何解决你的第二个问题,我不太确定,所以很遗憾我无法帮助你,但我相信其他人可能会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接