1

我搜索并发现了很多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();
            }
        });
    }
}
4

0 回答 0