【发布时间】:2018-06-10 07:12:28
【问题描述】:
我想做一个测验应用程序。活动流程如下: MainActivity -> ProfileActivity -> NewProfileActivity -> QuestionActivity -> ResultActivity -> Main Activity。
在 ProfileActivity 上,它将显示一个名称列表(使用 recyclerview)。它有一个调用 startActivityForResult() 的按钮。在 NewProfileActivity 上,它有一个按钮,可以将额外的字符串发送回 ProfileActivity。
问题是,我不希望 NewProfileActivity 回到 ProfileActivity。如何通过几个activity传递额外的然后显示在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);
【问题讨论】:
-
您能更清楚地说明您要达到的目标吗?
-
在NewProfileActivity中,用户需要输入自己的名字,这个名字会显示在ProfileActivity上。它以前可以工作,但是当单击 NewProfileActivity 中的按钮时,它会返回到 ProfileActivity。但我希望它转到 QuestionActivity。
-
您按的是哪个按钮,该按钮执行了哪些操作?您是在谈论后退按钮还是您已实现的一些自定义按钮?
-
NewProfileActivity 中的按钮。一个自定义按钮。
-
该按钮将始终指向 QuestionActivity。如果您想像下面的评论者提到的那样跨活动存储数据,您可以简单地使用共享首选项。
标签: android android-intent startactivityforresult