Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个onActivityResult冲突android_Java_Android_Get_Onactivityresult - Fatal编程技术网

Java 两个onActivityResult冲突android

Java 两个onActivityResult冲突android,java,android,get,onactivityresult,Java,Android,Get,Onactivityresult,我有两个活动,TakePictureActivity和ChooseSpictivity,它们都会导致困惑活动 如您所见,第一个活动启动启动相机的意图,允许您拍照并启动活动 第二个活动访问图库,允许您选择图片并启动拼图活动 在Puzzle活动中,调用createScaledBitmap方法生成位图 以下是TakePictureActivity: public final class PuzzleActivity extends Activity implements OnClickListener

我有两个活动,TakePictureActivity和ChooseSpictivity,它们都会导致困惑活动

如您所见,第一个活动启动启动相机的意图,允许您拍照并启动活动

第二个活动访问图库,允许您选择图片并启动拼图活动

在Puzzle活动中,调用createScaledBitmap方法生成位图

以下是TakePictureActivity:

public final class PuzzleActivity extends Activity implements OnClickListener{
private Bitmap bitmap; // temporary holder for puzzle picture
public static Chronometer chrono;
static TextView tv1;
static EditText et1;
Button button;
private static Context mContext;



//TODO onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.board);
  mContext = this;
  tv1 = (TextView) findViewById(R.id.movecount_display);

  if(DecidePicActivity.choosepic){
      try {
          bitmap = createScaledBitmap(ChoosePicActivity.imageUri);
       } catch (FileNotFoundException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       } catch (IOException e) {
          e.printStackTrace();
          finish();
       } catch (IllegalArgumentException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       }

       createGameBoard(getGridSize());
  }
  else if(DecidePicActivity.takepic){
      try {
          bitmap = createScaledBitmap(TakePictureActivity.imageUri);
       } catch (FileNotFoundException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       } catch (IOException e) {
          e.printStackTrace();
          finish();
       } catch (IllegalArgumentException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       }

       createGameBoard(getGridSize());
  }

  TileView.moveDetector = new GestureDetectorCompat(this, new MyGestureListener());
  Button pauseButton = (Button) findViewById(R.id.pause_button);
  pauseButton.setOnClickListener(this); 
以下是ChoosePicActivity:

public class ChoosePicActivity extends Activity {

String mCurrentPhotoPath;
public static final int IMAGEREQUESTCODE = 8242008;
static final int REQUEST_TAKE_PHOTO = 1;
public static final int DIALOG_PICASA_ERROR_ID = 0;
private static String DEBUG_TAG1 = "ChoosePicA";
private Bitmap bitmap;
public static Uri imageUri;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    selectImageFromGallery();
}


/* (non-Javadoc)
    * Will start an intent for external Gallery app.  
    * Image returned via onActivityResult().
    */   
private void selectImageFromGallery() {
      Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
            MediaStore.Images.Media.INTERNAL_CONTENT_URI);
      startActivityForResult(galleryIntent, IMAGEREQUESTCODE);
   }
 //TODO onActivityResult
   /* (non-Javadoc)
    * Run when Gallery app returns selected image.
    */
 @Override
   protected final void onActivityResult(final int requestCode, final int resultCode, final Intent i) {
      //super.onActivityResult(requestCode, resultCode, i);
      if (resultCode == RESULT_OK) {
          Log.d(DEBUG_TAG1,"ChoosePic onActivityResult ");
         switch (requestCode) {
         case IMAGEREQUESTCODE:
             imageUri = i.getData();
             Log.d(DEBUG_TAG1,"intent choose pic: " + i);
             Intent i1 = new Intent(this, PuzzleActivity.class);
             startActivity(i1);  
             break;
         } // end switch
      } // end if
   }

}
以下是活动:

public final class PuzzleActivity extends Activity implements OnClickListener{
private Bitmap bitmap; // temporary holder for puzzle picture
public static Chronometer chrono;
static TextView tv1;
static EditText et1;
Button button;
private static Context mContext;



//TODO onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.board);
  mContext = this;
  tv1 = (TextView) findViewById(R.id.movecount_display);

  if(DecidePicActivity.choosepic){
      try {
          bitmap = createScaledBitmap(ChoosePicActivity.imageUri);
       } catch (FileNotFoundException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       } catch (IOException e) {
          e.printStackTrace();
          finish();
       } catch (IllegalArgumentException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       }

       createGameBoard(getGridSize());
  }
  else if(DecidePicActivity.takepic){
      try {
          bitmap = createScaledBitmap(TakePictureActivity.imageUri);
       } catch (FileNotFoundException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       } catch (IOException e) {
          e.printStackTrace();
          finish();
       } catch (IllegalArgumentException e) {
          showDialog(DIALOG_PICASA_ERROR_ID);
       }

       createGameBoard(getGridSize());
  }

  TileView.moveDetector = new GestureDetectorCompat(this, new MyGestureListener());
  Button pauseButton = (Button) findViewById(R.id.pause_button);
  pauseButton.setOnClickListener(this); 
}

问题是:

我可以选择PicActivity,我可以从图库中选择一张图片,开始进入拼图活动,并用所选图片创建缩放位图。 在这里之前一切都好

然后,拼图活动完成,我开始拍摄PictureActivity,相机启动,我拍摄了一张照片,开始打算进行拼图活动,然后生成的缩放位图使用之前在ChoosePicActivity中选择的图像,留下最近拍摄的照片,这是应该用于生成缩放位图的图片

另一方面,如果启动TakePictureActivity时未选择先前启动的PicActivity,则拍摄的照片将用于生成缩放位图,如预期的那样

我希望我的解释能让你理解我的问题。谁能给点光吗

我不确定是否有2倍的方法onActivityResult是正确的,或者是否有不同的线程冲突,或者可能方法I.getdata在获取正确的意图id时遇到问题。。。我有点迷路了。

问题是由DecidePicActivity.choosepic和DecidePicActivity.takepic引起的

以前,决策活动是这样的:

public class DecidePicActivity extends Activity implements OnClickListener{
static boolean takepic = false;
static boolean choosepic = false;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    setContentView(R.layout.decidepic);
    findViewById(R.id.take_pic_button).setOnClickListener(this);
    findViewById(R.id.choose_pic_button).setOnClickListener(this);
}
@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.take_pic_button:
            takepic = true;
            Intent i1 = new Intent(this, TakePictureActivity.class);
            startActivity(i1);
            break;
        case R.id.choose_pic_button:
            choosepic = true;
            Intent i2 = new Intent(this, ChoosePicActivity.class);
            startActivity(i2);
            break;
    }
}  
@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.take_pic_button:
            takepic = true;
            choosepic = false;
            Intent i1 = new Intent(this, TakePictureActivity.class);
            startActivity(i1);
            break;
        case R.id.choose_pic_button:
            choosepic = true;
            takepic = false;
            Intent i2 = new Intent(this, ChoosePicActivity.class);
            startActivity(i2);
            break;
    }
}  
}

takepic和choosepic未正确重新初始化

现在,onClick in DecidePiActivity活动如下所示:

public class DecidePicActivity extends Activity implements OnClickListener{
static boolean takepic = false;
static boolean choosepic = false;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    setContentView(R.layout.decidepic);
    findViewById(R.id.take_pic_button).setOnClickListener(this);
    findViewById(R.id.choose_pic_button).setOnClickListener(this);
}
@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.take_pic_button:
            takepic = true;
            Intent i1 = new Intent(this, TakePictureActivity.class);
            startActivity(i1);
            break;
        case R.id.choose_pic_button:
            choosepic = true;
            Intent i2 = new Intent(this, ChoosePicActivity.class);
            startActivity(i2);
            break;
    }
}  
@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.take_pic_button:
            takepic = true;
            choosepic = false;
            Intent i1 = new Intent(this, TakePictureActivity.class);
            startActivity(i1);
            break;
        case R.id.choose_pic_button:
            choosepic = true;
            takepic = false;
            Intent i2 = new Intent(this, ChoosePicActivity.class);
            startActivity(i2);
            break;
    }
}  
问题解决了