2012-10-02 101 views
1

如果我們選擇第一個項目,它將保持在同一個活動中,但我們選擇除了第一個位置之外的其他項目,它將移動到下一個活動下一個活動開始活動在這種情況下無法正常工作?

startActivity(mv);當我們單擊第一個位置的圖像

上,但土司被顯示爲圖像已被選中,但沒有移動到下一個activty

public boolean onTouch(View v, MotionEvent arg1) { 
     // TODO Auto-generated method stub 

case R.id.imageView2: 

      upLoadPhoto(); 

      break; 
protected void upLoadPhoto() { 

     Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
     intent.setType("image/*"); 
     intent.putExtra("return-data", true); 
     startActivityForResult(intent, 100); 

    } 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 


if (requestCode == 100 && data != null && data.getData() != null) { 
       System.out.println("in case"); 
       Uri _uri = data.getData(); 

       if (_uri != null) { 
        // User had pick an image. 
        Cursor cursor = getContentResolver() 
          .query(_uri, 
            new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, 
            null, null, null); 
        cursor.moveToFirst(); 
        // Link to the image 
        final String imageFilePath = cursor.getString(0); 
        Log.v("imageFilePath", imageFilePath); 
        File photos = new File(imageFilePath); 
        try { 
         gbmp = BitmapFactory.decodeStream(
           new FileInputStream(photos), null, null); 
        } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        cursor.close(); 

       } 
       mv = new Intent(Imageselection.this, Modeselection.class); 
       mv.putExtra("test", gbmp); 
       mv.putExtra("name", 100); 
       System.out.println("going to gamestart class"); 
       startActivity(mv); 
       Toast.makeText(getApplicationContext(), "Image selected", Toast.LENGTH_SHORT).show(); 
      } 
+0

任何異常或登錄? – dumbfingers

+0

我在Logcat中遇到了這個錯誤。 JavaBinder(11060):!!!失敗的粘合劑交易!!! – user1705339

+0

我想我有你的問題,請檢查我的答案,看看它是否能解決你的問題。 – dumbfingers

回答

0

試試下面所示startactvity不調用碼。從GALLARY

Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     filePath = cursor.getString(columnIndex); 
     cursor.close(); 

,並在下面意圖您onActivityResult方法寫入選擇圖像在NextActivityonCreate方法寫去下一個活動

Intent picIntent = new Intent(CurrentActivity.this, 
         NextActivity.class); 
       picIntent.putExtra("gallery", filePath); 
       startActivity(picIntent); 

下面的代碼

ImageView imageView = (ImageView)findViewById(R.id.imgView); 

     String fileString = getIntent().getStringExtra("gallery"); 


     imageView.setImageBitmap(BitmapFactory.decodeFile(fileString)); 
+0

我已經嘗試通過調用cursor.close()下面的startActivity(mv),但它不起作用。 – user1705339

3

其因爲你把整個圖像傳遞給了包。

這個包的大小有限制,你不能將圖像本身放到意圖中。

您需要將圖像保存到緩存,然後將圖像的文件名或文件路徑傳遞到putExtra,然後通過訪問文件名或文件路徑來檢索它。

對於您的情況,您從圖庫中選擇圖像,然後您可以獲取該圖像的URI或路徑,將URI /路徑添加到意圖中,然後在另一個活動中檢索它。

當您打算啓動圖庫時,將返回data,其中包含所選文件的Uri。

這裏R如果啓動默認的畫廊,您可能需要一些示例代碼:

// Launch Gallery to choose pic. 
Intent intentLaunchGallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

startActivityForResult(intentLaunchGallery, LOAD_IMAGE_ACTIVITY_REQUEST_CODE); 

... 

private String getPath(Uri uri) { 
    String[] projection = { MediaColumns.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

... 

// Gallery launched to choose picture 
if (requestCode == LOAD_IMAGE_ACTIVITY_REQUEST_CODE) { 

     if (resultCode == RESULT_OK) { 

      fileUri = data.getData(); 
      filePath = getPath(fileUri); 
//    fileUri = Uri.parse(filePath); 

      // call media scanner to refresh gallery 
      MediaScannerConnection.scanFile(getApplicationContext(), new String[]{filePath}, null, new MediaScannerConnection.OnScanCompletedListener() { 

       @Override 
       public void onScanCompleted(String path, Uri uri) { 

        Log.i("MediaScanner", "Scanned " + path + ":"); 
        Log.i("MediaScanner", "-> uri=" + uri); 
       } 
      }); 

//    Toast.makeText(this, "Image chosen from: " + filePath, Toast.LENGTH_LONG).show(); 

      Log.d("MainMenu->onActivityResult", "Image chosen from: " + filePath); 

      // display the picture chosen by user 
      Intent intentShowMarkers = new Intent(MainMenuActivity.this, ShowMarkersActivity.class); 

      intentShowMarkers.putExtra("IMG", filePath); 
      intentShowMarkers.putExtra("FLAG", false); 

      MainMenuActivity.this.startActivity(intentShowMarkers); 

     } else if (resultCode == RESULT_CANCELED) { 

      // user pressed the cancel of gallery 
      Toast.makeText(MainMenuActivity.this, "Cancelled.", Toast.LENGTH_SHORT).show(); 

     } 
    } 
+0

注意:通過putExtra()傳遞大字符串也會觸發相同的異常(即對於閱讀此異常的任何人,異常不是特定於圖像的)。 –

相關問題