在活动A 中,我点击一个按钮转到活动B 。我使用Bundle
将数据带回活动A ,然后我设法更改了String value
中的ListView
。然后我转到另一个活动C 来操纵另一个数据。问题是,当我再次回到活动A 时,来自活动C 的数据会反映在ListView
中,但之前的数据来自于活动B 消失了。
以下是活动A 中活动B 的代码。
private void gotoRepeatWeeklyOptionActivity() {
Intent intent = new Intent(CreateNewAlarmActivity.this, RepeatWeeklyOptionActivity.class);
startActivity(intent);
finish();
}
这是从活动A 到活动C 的方法。
private void openAlarmToneOptionDialog() {
Intent intent = new Intent(CreateNewAlarmActivity.this, ChooseAlarmToneActivity.class);
startActivity(intent);
}
这是一个代码,可以从活动B 中获得活动A 。
@Override
public void onBackPressed() {
Intent intent = new Intent(this, CreateNewAlarmActivity.class);
ArrayList<Integer> repeatStatusIntList = new ArrayList<>();
intent.putExtra(Keys.OPTION, Keys.OPTION_REPEAT);
if(cbRepeatEveryDay.isChecked()) {
super.onBackPressed();
intent.putExtra(Keys.VALUE, Keys.EVERY_DAY);
Toast.makeText(this, getString(R.string.alarm_will_repeat_every_day), Toast.LENGTH_SHORT).show();
} else if(allUnchecked()) {
super.onBackPressed();
intent.putExtra(Keys.VALUE, Keys.NO_REPEAT);
Toast.makeText(this, getString(R.string.alarm_will_never_repeat), Toast.LENGTH_SHORT).show();
} else {
for(int i=0; i<repeatStatusList.size(); i++) {
super.onBackPressed();
if(repeatStatusList.get(i).isChecked()) {
repeatStatusIntList.add(getRepeatStatusInt(repeatStatusList.get(i)));
intent.putIntegerArrayListExtra(Keys.KEY_REPEAT_STATUS_INTEGERS_LIST, repeatStatusIntList);
}
intent.putExtra(Keys.VALUE, Keys.ON);
}
Toast.makeText(this, getString(R.string.alarm_will_repeat) + getString(R.string.every) +
getAllRepeatDays(repeatStatusList), Toast.LENGTH_SHORT).show();
}
startActivityForResult(intent, RESULT_OK);
finish();
}
最后,这是来自活动C 的代码,它会返回活动A 。
btnSelectTone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), CreateNewAlarmActivity.class);
intent.putExtra(Keys.OPTION, Keys.OPTION_ALARM_TONE);
intent.putExtra(Keys.VALUE, ringtone);
if(mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
startActivityForResult(intent, RESULT_OK);
finish();
}
});
答案 0 :(得分:0)
Atif所建议的是一种最适合您的解决方案。 否则,您可以使用下面的共享首选项。获取SP实例并提交要在编辑器中共享的数据
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
这就是你可以检索共享的pref数据的方法
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
我个人建议您在developer.android.com上浏览更多信息或访问以下链接 https://developer.android.com/guide/topics/data/data-storage.html#pref
将来,如果你有大量的数据,那么上述解决方案就无法运作。
请按照以下链接获取更多选项
How to pass the values from one activity to previous activity