2016-02-24 54 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。

相关问题