2

自分の活動に問題があります。

メインアクティビティがあります。ここには、通常のクラスによって呼び出される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が呼び出されます。ただし、ユーザーがピンコード画面の特定のボタンを押すと、selectUserメソッドが再度呼び出され、selectUserActivityが再開されます。

しかし、ここでユーザーを選択すると、ピンコード画面が前面に戻り、mainActivityのonActivityResultメソッドが呼び出されません。

私はすでに追加しようとしました

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

select userメソッドに変更しますが、これは機能しません。

原因は何ですか?

編集:これは、selectUserアクティビティの終了メソッドです。しかし、それは初めて動作するので、ここに問題があるとは思いません。

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

ピンコードアクティビティで。ユーザーがボタンをクリックすると、ピンコードアクティビティがバックグラウンドに移動するため、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 に答える