在 Android 活动之间传递值
Passing values between Android activities
我知道主题被打败了,但我仍然找不到适合我的案例的答案。
我有一个 activity1
正在运行。
我从 activity1
启动 activity2
:
Intent newIntent1 = new Intent(this,activity2.class);
startActivity(newIntent1);
我在 activity2 中获得了一些值,我需要将它们 return 作为字符串发送到 activity1。
如果我使用:
Intent newIntent = new Intent(this,activity1.class);
newIntent.PutExtra("dataname",SomeString);
startActivity(newIntent);
我 activity1
又开始了。但是我需要从activity2
returnSomeString
到原来的activity1
。那么我应该使用其他东西而不是意图吗?
以 startActivityForResult
启动您的 activity2 并使用 setResult()
方法将数据从 activity2 发送回 activity1。在活动 1 中,您需要覆盖 onActivityResult
以从 activity2
更新数据
尝试如下:
从 Acivity1 启动 Activity2 为:
Intent intnt = new Intent(this, activity2.class);
startActivityForResult(intnt, 1);
在 activity2 中使用 setResult 发送回数据:
Intent intent = new Intent();
intent.putExtra("keyvalue","value_here")
setResult(RESULT_OK, intent);
finish();
并在 activity1 中接收数据为 onActivityResult
:
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("keyvalue");
}
}
最简单的方法是在 main activity class(不是在 onCreate 方法中)中将 String 声明为静态,并在您希望引用它的任意多个活动中访问该字符串
MainActivity.stringName 在其他活动中以及作为
MainActivity 中的字符串名称。
到目前为止你一切正常,你只需要请求你设置的值
在你的 oncreate 中(在你的情况下在你的 activity1 中)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
String value = extras.getString("dataname");
}
}
我知道主题被打败了,但我仍然找不到适合我的案例的答案。
我有一个 activity1
正在运行。
我从 activity1
启动 activity2
:
Intent newIntent1 = new Intent(this,activity2.class);
startActivity(newIntent1);
我在 activity2 中获得了一些值,我需要将它们 return 作为字符串发送到 activity1。
如果我使用:
Intent newIntent = new Intent(this,activity1.class);
newIntent.PutExtra("dataname",SomeString);
startActivity(newIntent);
我 activity1
又开始了。但是我需要从activity2
returnSomeString
到原来的activity1
。那么我应该使用其他东西而不是意图吗?
以 startActivityForResult
启动您的 activity2 并使用 setResult()
方法将数据从 activity2 发送回 activity1。在活动 1 中,您需要覆盖 onActivityResult
以从 activity2
尝试如下:
从 Acivity1 启动 Activity2 为:
Intent intnt = new Intent(this, activity2.class);
startActivityForResult(intnt, 1);
在 activity2 中使用 setResult 发送回数据:
Intent intent = new Intent();
intent.putExtra("keyvalue","value_here")
setResult(RESULT_OK, intent);
finish();
并在 activity1 中接收数据为 onActivityResult
:
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("keyvalue");
}
}
最简单的方法是在 main activity class(不是在 onCreate 方法中)中将 String 声明为静态,并在您希望引用它的任意多个活动中访问该字符串 MainActivity.stringName 在其他活动中以及作为 MainActivity 中的字符串名称。
到目前为止你一切正常,你只需要请求你设置的值
在你的 oncreate 中(在你的情况下在你的 activity1 中)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
String value = extras.getString("dataname");
}
}