我搜索并发现了很多onActivityResult()/startActivityForResult()
问题,但我还没有解决我的问题。
在我的应用程序中,我有一个应该调用 EnterActivity 的 MainActivity。EnterActivity 有两个 Fragment,一个 SignupFragment 和一个 LoginFragment。目前,MainActivity 以 启动 EnterActivity startActivityForResult()
,它还覆盖了onActivityResult()
.
从 SignupFragment / LoginFragment,我调用getActivity().setResult(...)
and 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();
}
});
}
}