2014-11-21 30 views
0

我正在這所學校謨和我需要回到從我叫的setResult()不工作

startActivityForResult(Activity2, 100); 

活動的結果。然後在活動二我有這個

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(....); 
    final Intent BackToActivityOne = new Intent(Activity2.this, ActivityOne.class); 
    if(requestCode = this.REQUESTCODEACTIVITY && resultCode = RESULT_OK && data != null){ 

     //from the activity2 
     sum = data.getIntExtra("sum",0); 

     //to the activity1 
     BackToActivityOne.putExtra("total",sum); 

     btn1.setOnClickListener(new view.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 
       BackToActivityOne.putExtra("code",1000); 
       setResult(RESULT_OK,BackToActivityOne); 
       finish(); 
      } 
     }); 
     btn2.setOnClickListener(new view.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 
       BackToActivityOne.putExtra("code",1001); 
       setResult(RESULT_OK,BackToActivityOne); 
       finish(); 
      } 
     }); 
    }//if 
}//onActivityResult(...) 

這就是問題所在,當我點擊btn1或btn2時,它會殺死我的應用程序。

但我希望應用程序回到活性1,我使治療

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
super.onActivityResult(....); 
if(resultCode = RESULT_OK && data != null){ 
    final int Code = data.getIntExtra("code",0); 

    if(code == 1000){ 
    //code to do 
    } 
    else if(code == 1001){ 
    //code to do 
    } 

    }//if 
}//onActivityResult(...) 

我肯定做錯了什麼,但我不能找到什麼。希望有人能幫我找到錯誤。

+0

你是混合的東西。 onActivityResult是回調。閱讀http://developer.android.com/training/basics/intents/result.html – Preetygeek 2014-11-21 21:55:34

回答

0

你在混合兩件事。 protected void onActivityResult應該只在活動一中被覆蓋。

活動二shold有兩個按鈕,我想通了。 yor code:

btn1.setOnClickListener(new view.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 
       final Intent BackToActivityOne = new Intent(Activity2.this, ActivityOne.class); 
       BackToActivityOne.putExtra("code",1000); 
       setResult(RESULT_OK,BackToActivityOne); 
       finish(); 
      } 
     }); 

應該在onCreate你從哪裏獲得你的參考資料。不在onActivityResult。記得按ID查看並初始化引用!我不認爲最後的意圖是必要的。

0

哈哈耶我的壞我第三次和第四次活動​​。 1活動開始2然後2開始3 3開始4取回結果並再次開始4幾次。 當來回完成後,活動3返回到2,然後btn1和btn2文本更改並設置新的onclick方法。這就是爲什麼它在onactivityresult()上。

最後我的意圖是來自android studio的自動更正。如果我以前沒有放過最後的決賽。我無法將其稱爲我的onclick方法。這是錯誤代碼。

 variable 'BacktoActivityOne' is accessed from whithin inner class, 
    needs to be declared final 

我需要的是:

  • 活動時3發回是導致到活動2按鈕變化的文字和你可以在我的第一篇文章看,根據巫按鈕被點擊我用不同的參數putExtra()。所以如果btn1被點擊「代碼」是1001,如果它是btn2「代碼」是1000.
  • 現在我想把這個發送到我的main_activity這裏我在這裏命名爲activity1。則在該方法onActivityResult()的活性1的我得到的代碼,並做一些事情,如果代碼是1000,和其他的東西,如果代碼是1001

但後來當我單擊BTN1或BTN2。我的應用程序被殺,沒有任何信息發送到activity1。我的猜測是比我在OnActivityResult(在Activity2中)聲明的最終目的有什麼問題,因爲當我在Activity3或4上查看它時,android studio將它寫入「黑色」(顏色),但是這裏在Activity2我的意圖,當我把它放在setResult(RESULT_OK,intent); < - 這裏的意圖是紫色的,而不是黑色的