2016-02-24 82 views
0

我有3個活動。在第一個活動中,onClick方法在內部調用startActivityForResult將其引導至活動2.然後從活動2開始,您可以單擊另一個按鈕,將其引導至活動3.當從第3活動調用setResult時將數據返回到第1活動

在活動3中,我想調用setResult方法,之後,它將完成Activity並使您回到Activity 1,其中包含來自Activity 3的數據。

但是,由於某些原因,數據爲空,且Activity.RESULT_OK永遠不會被調用。

我該如何處理?謝謝。

在活動之一:

@Override 
public void onClick(View view) { 

    IVID = view.getId(); 

    Intent i = new Intent(this, PhotoSelectActivityMultiple.class); 
    startActivityForResult(i, 1); 


} 

在活動2:

 Intent returnIntent = new Intent(getApplicationContext(), CollageGrid.class); 
       returnIntent.putStringArrayListExtra("imageurls", mDownloadURL); 
       startActivity(returnIntent); 
       overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 

在活動3:

  Intent intent=new Intent(); 
      intent.putExtra("part",byteArray); 
      setResult(1, intent); 
      finish(); 

在onActivity

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 1) { 
     if(resultCode == Activity.RESULT_OK) { 
      updateThis = (ImageView) findViewById(IVID); 

      byte[] byteArray = data.getByteArrayExtra("part"); 
      Bitmap current_bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
      updateThis.setImageBitmap(current_bmp); 
     } 
     if (resultCode == Activity.RESULT_CANCELED) { 

     } 
    } 

} 
+0

所以你按照這個順序調用活動activity1-> activity2-> activity3'然後你在'activity3'中設置'setResult()',並期望'activity1'獲得'onActivityResult'的結果?是對的嗎? – Bhargav

+0

@Bhargav是的,這是我想達到的。 – Jack

+0

你瞭解'setResult'的工作原理嗎?當你按照一定的順序調用活動時,'setResult'按照相反的順序返回,所以你需要做的是在'activity2'中調用'onActivityResult()',並將你的接收結果(數據)傳遞給'setResult()' – Bhargav

回答

0

除了通過簡單地調用StartActivity來啓動Activity 3,我們還需要通過StartActivityForResult調用Activity 3。因此,Activity3會將值返回到Activity2的OnActivityResult,您可以將值傳遞給Activity1。

相關問題