【发布时间】:2011-10-19 12:03:23
【问题描述】:
这是一个基本问题,但我需要一些帮助。
我有两个活动:actA,actB。 在actA中我想启动actB并给它一个String,而不是我想结束actB并将另一个String返回给actA(我不想去actA的onCreate(),我宁愿将此值返回给一些actA 中的方法,因此它可以使用来自 actB 的字符串。
感谢您的帮助
【问题讨论】:
这是一个基本问题,但我需要一些帮助。
我有两个活动:actA,actB。 在actA中我想启动actB并给它一个String,而不是我想结束actB并将另一个String返回给actA(我不想去actA的onCreate(),我宁愿将此值返回给一些actA 中的方法,因此它可以使用来自 actB 的字符串。
感谢您的帮助
【问题讨论】:
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 中:
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");
【讨论】:
下面链接的问题的答案也描述了您正在寻找的同一问题
【讨论】:
至于您的第一个问题,您可以在实际创建 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");
我不太确定如何解决您的第二个问题,所以很遗憾我无法帮助您解决这个问题,但我相信其他人可以。
【讨论】: