MainActivity中的startActivityForResult

时间:2014-09-02 15:10:14

标签: android android-activity startactivityforresult

我在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 个答案:

答案 0 :(得分:0)

在达到requestCode时检查resultCodeonActivityResult的值。 实际上,如果第一个Activity没有调用setResult(RESULT_OK),android将为您返回RESULT_CANCELED,并且永远不会达到第二个startActivity调用。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);

而不是:

startActivityForResult (intent, OK_NEW_PRODUCT);

答案 3 :(得分:0)

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

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);