たくさんの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();
}
});
}
}