我有3项活动:A,B,C。 在活动A中,我从用户处获取Name和Surname,并通过Intent将其传递给活动B. 在活动B中,我得到Number1和Number 2,并将Name,Surname,Number1和Number2传递给活动C,我在TextViews中显示它们。 我想更改活动B中的数据,但如果我更改并将更新后的数字传递给活动C,活动A中的名称和姓氏将在活动C中消失。 如何在最终活动中保留未更改的数据?
活动A
public void button1(View v)
{
EditText personName = (EditText)findViewById(R.id.textName);
EditText surname= (EditText)findViewById(R.id.surname);
name = personName.getText().toString();
secondname = surname.getText().toString();
Intent go = new Intent(this, activityB.class);
go.putExtra("name", name);
go.putExtra("secondname", secondname);
startActivity(go);
}
活动B
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_numbers);
Intent info = getIntent();
String name = info.getStringExtra(name, "");
String surname = info.getStringExtra(secondname, "");
}
public void button2(View v)
{
EditText number1 = (EditText)findViewById(R.id.number1);
EditText number2 = (EditText)findViewById(R.id.number2);
num1 = number1.getText().toString();
num2 = number2.getText().toString();
Intent go = new Intent(this, activityB.class);
go.putExtra("number1", num1);
go.putExtra("number2", num2);
go.putExtra("name", name);
go.putExtra("secondname", secondname);
startActivity(go);
}
活动C
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_final);
Intent info = getIntent();
String name = info.getStringExtra(name, "");
String surname = info.getStringExtra(secondname, "");
int number1 = info.getIntExtra(number1, 0);
int number2 = info.getIntExtra(number12, 0);
...Show them in TextView
}
然后我在活动C中有一个按钮,它将我发送给A或B以更改数据。如果我仅在B中更改数据,则会在活动C中丢失A的数据。
欢迎任何帮助。
谢谢,Marco
答案 0 :(得分:1)
确实有助于发布您的代码!但基本上,最简单的实现是make数据持久化。您传递的对象是2个字符串和2个数字 - 这非常适合通过共享首选项进行持久化!
以下是解释如何实施此类解决方案以保持数据持久性的链接:http://developer.android.com/training/basics/data-storage/shared-preferences.html
基本上,您需要创建键值集,这意味着标识键的字符串,然后是包含要保留的数据的字符串/ double / int。
随时提供更多信息和代码,以便我们为您提供更好的帮助!