我的活动有一些问题。
我有一个主要活动,这里有两个由普通类调用的方法。
public class MainActivity extends Activity {
public void selectUser(String users) {
// Start select user screen
Intent i = new Intent(this, SelectUserActivity.class);
i.putExtra("users", users);
//i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(i, SELECT_USER_CODE);
}
public void showPincodeScreen(String userName, String residentName) {
// Start pincode screen
Intent i = new Intent(this, PincodeActivity.class);
i.putExtra("userName", userName);
i.putExtra("residentName", residentName);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}
}
在选择用户屏幕中,用户可以从列表中选择一个用户,该用户将返回到主活动的 onActivityResult 方法。这行得通。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_CANCELED) {
switch (requestCode) {
case SELECT_RESIDENT_CODE:
if (data != null) {
if (data.hasExtra("residentid")) {
loadingScreen("Taken worden opgehaald");
BroadcastSender.sendValue(
data.getStringExtra("residentid"), "1");
}
}
break;
case SELECT_USER_CODE:
if (data != null) {
if (data.hasExtra("userid") && data.hasExtra("username")) {
setTitle(data.getStringExtra("username"));
loadingScreen.hideMessage();
String userid = data.getStringExtra("userid");
BroadcastSender.sendValue(userid, "1");
}
}
break;
选择用户后,将调用 showPincodeScreen。但是当用户在 pincode 屏幕上按下某个按钮时,会再次调用 selectUser 方法并再次启动 selectUserActivity。
但是当我现在选择一个用户时,pincode屏幕跳回到前面,并且没有调用mainActivity的onActivityResult方法。
我已经尝试添加
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
到选择用户方法,但这不起作用。
可能是什么原因?
编辑:这是 selectUser Activity 的完成方法。但它是第一次工作,所以我认为问题不在这里。
@Override
public void finish() {
// Prepare data intent
Intent data = getIntent();
data.putExtra("userid", selectedItem.getItemID());
data.putExtra("username", selectedItem.getItemName());
// Activity finished ok, return the data
setResult(RESULT_OK, data);
super.finish();
}