我想制作一个测验应用。活动流程如下: MainActivity - > ProfileActivity - > NewProfileActivity - > QuestionActivity - > ResultActivity - >主要活动。
在ProfileActivity上,它将显示一个名称列表(使用recyclerview)。它有一个调用startActivityForResult()的按钮。在NewProfileActivity上,它有一个按钮,可以将字符串额外发送回ProfileActivity。
问题是,我不希望NewProfileActivity返回到ProfileActivity。如何通过几个活动传递额外的内容,然后在ProfileActivity上显示?
在ProfileActivity中
Intent intent = getIntent();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ProfileActivity.this, NewProfileActivity.class);
startActivityForResult(intent, NEW_PROFILE_ACTIVITY_REQUEST_CODE);
}
});
在onActivityResult()方法
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == NEW_PROFILE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
Profile profile = new Profile(intent.getStringExtra("profile_name"));
mProfileViewModel.insert(profile);
} else {
Toast.makeText(getApplicationContext(),
R.string.empty_not_saved,
Toast.LENGTH_LONG).show();
}
}
在NewProfileActivity中
final Button save_profile_button = findViewById(R.id.button_save);
save_profile_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String profile_name = mProfileNameView.getText().toString();
Intent intent = new Intent(NewProfileActivity.this, QuestionActivity.class);
intent.putExtra("profile_name_extra", profile_name);
startActivity(intent);
}
});
为简单起见,对于其余的活动,我通过将此代码放在onCreate方法上来传递额外的内容:
Intent intent = getIntent();
final String profile_name = intent.getStringExtra("profile_name_extra");
然后在按钮上,我输入了这段代码:
Intent intent = new Intent(QuestionActivity.this, ResultActivity.class);
intent.putExtra("profile_name_extra", profile_name);
答案 0 :(得分:0)
您可以将数据放入sharedPreferences对象,然后在任何可用的Activity中将其检索回来。这样,您可以避免在多个活动之间来回传递数据的开销。 因此,在NewProfileActivity中将额外内容保存到sharedPreferences中,并在任何地方再次获取它。 可以在此处找到用于从sharedPreferences写入和读取数据的文档
https://developer.android.com/training/data-storage/shared-preferences
希望这会有所帮助。