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

Android:在两个活动之间切换并共享信息,android,android-activity,Android,Android Activity,这是一个基本问题,但我需要一些帮助 我有两个活动:actA,actB。 在actA中,我想启动actB并给它一个字符串,而不是结束actB并将另一个字符串返回给actA(我不想转到actA的onCreate(),我更希望将该值返回给actA中的某个方法,以便它可以使用actB中的字符串) 感谢您的帮助对于您的第一个问题,在实际创建意图之前,您可以使用方法intentname.putExtra(“extravalue”,value);为新意图提供额外值。 然后,你可以在新创建的活动中读出这个值。我

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

我有两个活动:actA,actB。 在actA中,我想启动actB并给它一个字符串,而不是结束actB并将另一个字符串返回给actA(我不想转到actA的onCreate(),我更希望将该值返回给actA中的某个方法,以便它可以使用actB中的字符串)


感谢您的帮助

对于您的第一个问题,在实际创建意图之前,您可以使用方法
intentname.putExtra(“extravalue”,value);
为新意图提供额外值。 然后,你可以在新创建的活动中读出这个值。我知道我在解释方面非常糟糕,但我希望你能从我从自己制作的应用程序中获取的这段代码中得到这个想法

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");
我不太确定如何解决您的第二个问题,因此很遗憾,我无法帮助您解决这个问题,但我相信其他人可能会解决。

来自A.java:
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>");
        }
Intent myintentB=新的Intent(A.this,B.class).putExtra(“,”值”); startActivityForResult(myintentB,3); 从B.java: Intent myintent=新的Intent(B.this,A.class).putExtra(“,”值”); 完成(); setResult(3,myintentA); 在A.java中 @凌驾 受保护的void onActivityResult(int请求代码、int结果代码、意图数据){ //TODO自动生成的方法存根 super.onActivityResult(请求代码、结果代码、数据); 字符串结果\u String=data.getStringExtra(“”); }
在活动A中:

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

发回数据时:

Intent intent = new Intent() ;
intent.putExtra ("Return" , "RETURN STRING") ;
setResult(RESULT_OK, intent) ;
finish() ;
在活动A中:(onActivityResult)[需要重写]

if (data.hasExtra("Return"))
String data1 = data.getStringExtra("Return");

下面链接的问题的答案也描述了您正在寻找的相同问题


要处理结果,请在“A”活动中使用onActivityResult();什么是测试,数字3的含义是什么?3是请求代码。假设使用startActivityForResult()时不止一次,这个requestCode将是onActivityResultI中的标识符,我尝试使用actA中代码的第一部分,我得到两个错误:1.类型Intent中的方法setClass(Context,Class)不适用于参数(Class)2.无法解析Context对于未解析的Context,比如getApplicationContext().对于setClass,根据需要包括上下文。
if (data.hasExtra("Return"))
String data1 = data.getStringExtra("Return");