你好,我希望你能帮助我:
我有三项活动:Activity1 --> Activity2 --> Activity3
在Activity1和2中,我有一个Intent,它从EditText Extra。中放入一个字符串。
在Activity3中我想收到BOTH字符串,但是当我尝试Activity3时,只接收来自Activity2的Intent(上一个活动)。
这里是Activity1的代码:
public void onClick(View v) {
Intent intent = new Intent (this, Activity2.class);
EditText et1 = (EditText) findViewById(R.id.editText1);
String name = et1.getText().toString();
if (name.length() == 0) {
new AlertDialog.Builder(this).setMessage(
R.string.error_name_missing).setNeutralButton(
R.string.error_ok,
null).show();
return;
}
intent.putExtra(konto_name1, name);
startActivity(intent);
}
来自Activity2:
public void onClick(View v) {
Intent intent = new Intent (this, Activity3.class);
EditText et2 = (EditText) findViewById(R.id.editText2);
String value = et2.getText().toString();
if (value.length() == 0) {
new AlertDialog.Builder(this).setMessage(
R.string.error_value_missing).setNeutralButton(
R.string.error_ok,
null).show();
return;
}
intent.putExtra(start_value1, value);
startActivity(intent);
}
答案 0 :(得分:1)
像这样修改你的第二个活动代码。在第二个活动中看到您有不同的意图。它与第一次活动的意图无关。因此,您需要将第一个活动意图的值转换为第二个活动意图。
Intent intent = new Intent (this, Activity3.class);
EditText et2 = (EditText) findViewById(R.id.editText2);
String value = et2.getText().toString();
if (value.length() == 0) {
new AlertDialog.Builder(this).setMessage(
R.string.error_value_missing).setNeutralButton(
R.string.error_ok,
null).show();
return;
}
intent.putExtra(start_value1, value);
intent.putExtra(konto_name1,getIntent().getStringExtra(konto_name1));//Add this line in your code
startActivity(intent);
}
答案 1 :(得分:1)
在Acitivity2.java
中获取您的第一个活动意图并再次将其传递给Activity3.java
<强> Activity1.java 强>
Intent intent = new Intent (this, Activity2.class);
intent.putExtra(konto_name1, name);
startActivity(intent);
<强> Activity2.java 强>
Intent intent = new Intent (this, Activity3.class);
final String firstActivityValue = getIntent().getStringExtra("name");
intent.putExtra(start_value1, value);
intent.putExtra(start_value2, firstActivityValue);
startActivity(intent);
现在,您可以使用getIntent()在Activity3.java
中获取这两个值。
希望它有所帮助。
答案 2 :(得分:1)
正如其他答案所讨论的那样,你可以从Intent传递给Intent。但是,您也可以使用SharedPreferences
来更轻松地使用它。
SharedPreferences prefs = getDefaultSharedPreferences(this);
Editor edit = prefs.edit();
edit.putString(konto_name1, name)
edit.commit();
或者如果你想要它作为一个单行:
PreferenceManager.getDefaultSharedPreferences(this).edit().putString(konto_name1, name).commit();
然后使用:
而不是从Intent获取字符串SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String newString = prefs.getString(konto_name1, "");
那就做你想要的,而不必跟踪从Intent传递给Intent的字符串,我过去常常觉得这很烦人。
再次,上面作为一个单行:
PreferenceManager.getDefaultSharedPreferences(this).getString(konto_name1, "");
您应该对Activity2中的String执行相同的操作。不用担心,每次在活动(1/2)中单击您的项目时,首选项都将被覆盖。请注意,getString()
中的第二个参数是默认字符串,以防您要检索的字符不存在。