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

时间:2011-10-19 12:03:23

标签: android android-activity

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

我有两个活动:actA,actB。 在actA中我想启动actB并给它一个String,比我想结束actB并将另一个String返回给actA(我不想去actA的onCreate(),我宁愿把这个值返回给某个actA中的方法,因此它可以使用actB中的String。

感谢帮助

4 个答案:

答案 0 :(得分: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>");
        }

答案 1 :(得分: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() ;

在活动A :( onActivityResult)[你需要覆盖]

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

答案 2 :(得分:0)

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

How to pull string from bundle in onResume()?

答案 3 :(得分:-1)

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

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");

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