2014-09-02 94 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