2

我的活动有一些问题。

我有一个主要活动,这里有两个由普通类调用的方法。

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();
}
4

2 回答 2

2

我找到了解决方案,我放置了

@Override
protected void onStop() {
    finish();
    super.onStop();
}

在密码活动中。当用户现在单击按钮时,pincode 活动进入后台,因此调用 onStop 方法并完成活动。

现在调用 mainActivity 的 onActivityResult 并正确执行:)

于 2012-10-02T13:53:43.887 回答
0

首先,您应该在末尾添加,SELECT_RESIDENT_CODE以便可以捕获它的返回:startActivityshowPincodeScreenonActivityResult

startActivity(i,SELECT_RESIDENT_CODE);

当您从 pinCode 活动调用 selectUser 活动时,它将返回到调用它的活动 - pinCode 活动。您应该onActivityResult在那里实现并在其中调用 finish() 。

于 2012-10-02T13:07:58.127 回答