1

たくさんのonActivityResult()/startActivityForResult() 問題を検索して見つけましたが、問題は解決していません。

私のアプリには、EnterActivity を呼び出す MainActivity があります。EnterActivity には、SignupFragment と LoginFragment の 2 つの Fragment があります。現在、MainActivity は EnterActivity をで開始しstartActivityForResult()、 もオーバーライドしますonActivityResult()

SignupFragment / LoginFragment から and を呼び出しますgetActivity().setResult(...)。これはgetActivity().finish()EnterActivity を終了しますMainActivity.onActivityResult()が、呼び出されません。誰でも助けることができますか?

public class MainActivity extends Activity {
    ...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (666 == requestCode) {
            Log.in("gotcha!");
        }
    }

    @Override
    protected void onCreate(Bundle bundle) {
        Intent intent = new Intent(this, EnterActivity.class);
        startActivityForResult(intent, 666);
    }
}

サブアクティビティは次のようになります。

public class EnterActivity extends ActionBarActivity {
    ...
    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.main_frame, new LoginFrament())
            .commit();
    }
}

フラグメントは次のようになります。

public class LoginFragment extends Fragment {
    ...
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
        getView().findViewById(R.id.buttonSignUpLogIn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ...
                getActivity().setResult(Activity.RESULT_OK);
                getActivity().finish();
            }
        });
    }
}
4

0 に答える 0