2014-09-02 93 views
0

我有这样的代码我的MainActivity内:安卓: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上。

任何人都知道为什么?!

编辑

解决了:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT); 
+0

你试过=> resultCode为的== RESULT_OK代替resultCode为== Activity.RESULT_OK? – Jamil 2014-09-02 15:22:49

+0

在onActivityResult方法中添加一些日志以确保程序在执行第一个活动时运行。如果没有,请在完成第一个活动时确定调用setResult方法。 – UperOne 2014-09-02 15:23:47

+0

Lemme问你一些事情只是为了确认,你确定你的第一个活动是一个活动,而不是一个片段? – 2014-09-02 15:25:16

回答

0

检查时达到requestCoderesultCodeonActivityResult。 事实上,如果第一个活动不会调用setResult(RESULT_OK),则android会为您返回RESULT_CANCELED,并且第二个startActivity调用将永远不会到达。

+0

相同的值OK_NEW_PRODUCT = 0 – Simone11489 2014-09-02 15:16:46

+0

可能您正在接收'RESULT_CANCELED'。如果你没有明确调用'SetResult(RESULT_OK)',Android会为你设置'RESULT_CANCELED'。 – HappyCactus 2014-09-02 15:20:47

+0

您可以编辑您的答案@HappyCactus,以包含评论中的信息吗?作为一个独立的答案,它只是一个评论(并且是被删除的候选人)。 – 2014-09-02 15:32:57

0

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

+0

完成:在其他活动中,我有: setResult(Activity.RESULT_OK); finish(); – Simone11489 2014-09-02 15:19:48

+0

现在工作吗? – 2014-09-02 15:20:31

+0

它已经是这样,并没有工作 – Simone11489 2014-09-02 15:21:43

0

你的MainActivity代码表明,它是一个fragment.If它是如此,使用

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);

,而不是

startActivityForResult (intent, OK_NEW_PRODUCT);

+0

你在这里发布的MainActivity代码包含'getActivity()'。不是吗?你确定你发布的代码是完全相同的一个你在日食中有什么? – 2014-09-02 16:05:56

+0

我发布了错误的答案对不起 – Simone11489 2014-09-02 16:10:23

+0

错误的答案?你是什么意思?如果你解决了它并发布了你的答案,然后接受答案,即点击你的答案下面的“正确的标记”。 – 2014-09-02 16:16:16

0

好的,我解决了;关键是这样写的:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT); 

感谢大家的

+0

并非如此:如果我这样做(在onActivityResult方法中放入.getActivity)我有这个错误:_方法getActivity()未定义类型MainActivity_ – Simone11489 2014-09-02 16:14:08

+0

如果此答案适用于您,请通过单击“正确的标记“下面的答案。 – 2014-09-02 16:18:50

+0

2天内我无法接受我自己的答案.... – Simone11489 2014-09-02 17:33:15