2011-10-19 59 views
3

这是一个基本问题,但我需要一些帮助。Android:在两个活动之间切换并在它们之间共享信息

我有两个活动:actA,actB。 虽然在actA我想开始actB并给它一个字符串,比我想结束actB并返回另一个字符串actA(我不想去actA的onCreate(),我宁愿将此值返回给在Acta一些方法,因此可以从ACTB使用的字符串。

帮助表示赞赏

回答

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>"); 
     } 
+0

相同的问题;在你的“A”活动中。 – DecodeGnome

+0

什么是测试和数字3的含义是什么? – Belgi

+0

3是requestCode。假设当你多次使用startActivityForResult()时,那么这个requestCode将会是onActivityResult中的标识符 –

-1

关于你的第一个问题,你可以通过使用方法intentname.putExtra("extravalue", value);实际创建的意图之前给一个新的意向额外的价值。 然后,您可以在新创建的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"); 

我不太清楚如何解决你的第二个问题,让我遗憾的是不能帮你这一个,但我肯定别人可能会。

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

中检查该请求代码我尝试使用actA中的代码的第一部分,并且我得到两个错误: 1。类型Intent中的方法setClass(Context,Class )不适用于参数(Class ) 2.context无法解析 – Belgi

+0

对于未解析的上下文,请说getApplicationContext()。根据需要为setClass包含上下文。 – Vinay