0

我的 MainActivity 中有这段代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView=null;
            if (getArguments().getInt(ARG_SECTION_NUMBER)==1){
                rootView = inflater.inflate(R.layout.fragment_main, container, false);
                final Button newProdButton = (Button) rootView.findViewById(R.id.new_prod_button);
                newProdButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                     public void onClick(View v) {
                        Intent intent = new Intent (getActivity(), NewProdActivity.class);
                        startActivityForResult (intent, OK_NEW_PRODUCT);
                        }

                });

之后:

public void onActivityResult(int requestCode, int resultCode, Intent data) {     
        super.onActivityResult(requestCode, resultCode, data); 
        if (requestCode==OK_NEW_PRODUCT){
            if (resultCode == Activity.RESULT_OK) { 
              Intent intent = new Intent (MainActivity.this, ProductActivity.class);
              startActivity(intent);

           }
        } 
      }

目的是在第一个活动结束时开始第二个活动,以防后者成功执行所有操作。

但是,当我结束第一个任务时,什么也没有发生,应用程序仍然在MainActivity. 为什么?

4

4 回答 4

0

检查达到的值requestCoderesultCode时间onActivityResult。事实上,如果第一个 Activity 没有调用setResult(RESULT_OK),android 会RESULT_CANCELED为你返回,并且永远不会到达第二个 startActivity 调用。

于 2014-09-02T15:13:58.773 回答
0

你必须setResult(RESULT_OK)在完成第一个活动之前

于 2014-09-02T15:15:07.490 回答
0

我通过以下方式解决了编写代码的问题:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);
于 2014-09-02T16:06:48.817 回答
0

您的代码MainActivity表明它是一个片段。如果是这样,那么使用:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);

代替:

startActivityForResult (intent, OK_NEW_PRODUCT);
于 2014-09-02T15:37:37.837 回答