Java 如何在活动之间传递值
我创建了3个活动:Java 如何在活动之间传递值,java,android,android-activity,Java,Android,Android Activity,我创建了3个活动:firstActivity,secondActivity,和thirdActivity firstActivity是主要活动 secondActivity只有在收到短消息后才会工作,然后将消息发送到thirdActivity thirdActivity将字符串值转换为双精度值,然后将双精度值发送到firstActivity 我可以将值从secondActivity发送到thirdActivity,但我不知道如何传递值从thirdActivity到firstActivity。
firstActivity
,secondActivity
,和thirdActivity
firstActivity
是主要活动secondActivity
只有在收到短消息后才会工作,然后将消息发送到thirdActivity
thirdActivity
将字符串值转换为双精度值,然后将双精度值发送到firstActivity
我可以将值从
secondActivity
发送到thirdActivity
,但我不知道如何传递值从thirdActivity
到firstActivity
。请告诉我应该怎么做。有几种方法
一种是使用自定义应用程序类为整个应用程序存储某种“全局值”。这样,您可以在firstActivity
中设置值,并在thirdActivity
中使用它们
看看SO问题,了解如何在Android应用程序中存储全局状态。无论何时,只要有一个需要结果的活动被调用,比如在本例中,你有第三个活动,你总是可以使用该方法,而不仅仅是startActivity。一旦thirdActivity完成了它的处理,并且它想要返回结果值,它应该调用setResult,就这样
这个方法的问题是你中间有第二个活动。真的有必要吗 谢谢你的帮助。现在我可以将值从thirdActivity传递到firstActivity,这就是我的方法 第三十届:
public class ThirdActivity extends Activity {
double value1, value2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
value1 = Double.parseDouble(value1FromSecondActivity);
value2 = Double.parseDouble(value2FromSecondActivity);
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtra("Value1", value1);
intent.putExtra("Value2", value2);
startActivity(intent);
finish();
}
}
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
protected void onResume() {
Bundle extras = getIntent().getExtras();
if (extras != null) {
dValue1 = extras.getDouble("Value1");
dValue2 = extras.getDouble("Value2");
Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
}
super.onResume();
}
}
第一项活动:
public class ThirdActivity extends Activity {
double value1, value2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
value1 = Double.parseDouble(value1FromSecondActivity);
value2 = Double.parseDouble(value2FromSecondActivity);
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtra("Value1", value1);
intent.putExtra("Value2", value2);
startActivity(intent);
finish();
}
}
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
protected void onResume() {
Bundle extras = getIntent().getExtras();
if (extras != null) {
dValue1 = extras.getDouble("Value1");
dValue2 = extras.getDouble("Value2");
Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
}
super.onResume();
}
}
是的,这是必要的。我想用BroadcastReceiver接收短信,然后发送给thirdActivity。从你的回答中,你能给我举个例子吗?我想说,你在那里做的事情并不需要3项活动。您现在在thirdActivity中执行的解析过程可以很好地在firstActivity中完成,只要它从secondActivity(我假定它是一个BroadcastReceiver)获得“原始”消息。