2013-05-09 2 views
2

Я работаю над приложением для редактирования фотографийAndroid как открыть изображение и отобразить его во второй деятельности

У меня есть кнопка в первой активности и ImageView во второй деятельности. Когда я нажму кнопку, откроется галерея, и я смогу выбрать изображение. Выбранное изображение должно появиться в моем ImageView во втором действии, но это не так.

Внизу ниже мой код, который не работает, вы знаете, что не так?

ПЕРВАЯ ДЕЯТЕЛЬНОСТЬ:

package com.example.odabirslike; 

import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class Pocetni extends Activity { 

    private Button buttonLoadImage; 

    private static final int SELECT_PICTURE = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pocetni); 

     this.buttonLoadImage = (Button) this.findViewById(R.id.pickbutton); 

     buttonLoadImage.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View arg0) 
      { 
       Intent i = new Intent(); 
        i.setType("image/*"); 
        i.setAction(Intent.ACTION_GET_CONTENT); 
        startActivityForResult(Intent.createChooser(i, "Complete action using"), SELECT_PICTURE);    
      } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     Bitmap selectedphoto = null; 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && null != data) 
     { 
      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]); 
      String filePath = cursor.getString(columnIndex); 
      selectedphoto = BitmapFactory.decodeFile(filePath); 
      cursor.close(); 
      Intent i = new Intent (Pocetni.this, Drugi.class); 
      i.putExtra("data",selectedphoto); 
      startActivity(i); 
     } 

    } 
} 

ВТОРАЯ ДЕЯТЕЛЬНОСТЬ:

package com.example.odabirslike; 

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.view.Menu; 
import android.widget.ImageView; 

public class Drugi extends Activity { 

    ImageView view = (ImageView) findViewById(R.id.imageView1); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_drugi); 

     Bitmap selectedphoto =(Bitmap)this.getIntent().getParcelableExtra("data"); 
     view.setImageBitmap(selectedphoto); 
    } 
} 

ANDROID МАНИФЕСТ:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.odabirslike" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<uses-sdk 
     android:minSdkVersion="15" 
     android:targetSdkVersion="15" /> 


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.odabirslike.Pocetni" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.odabirslike.Drugi" 
      android:label="Drugi" > 
     </activity> 
    </application> 

</manifest> 

ответ

0

Это может быть, что Bitmap является слишком большим, чтобы быть розданы как что. Почему бы вам не вместо этого поставить

String filePath = cursor.getString(columnIndex); 
i.putExtra("data",filepath); 

в вашем первом действии. И в вашей второй

String filepath =this.getIntent().getStringExtra("data"); 
Bitmap selectedphoto = BitmapFactory.decodeFile(filePath); 

Должно быть менее обременительным для вашего приложения, по крайней мере

+0

Я попытался поместить эту часть кода, но все равно не работает. А теперь я бог ошибка "источник не найден" –

+0

Не могли бы вы разместить свой логарифм? И пока вы на это: что такое содержимое пути к файлу при вызове i.putExtra («data», filepath) ;? – DigCamara

+0

Содержимое файла pathpath должно быть выбрано с выбранной фотографии. Проблема начинается, когда я выбираю фотографию из галереи. Я могу нажать на кнопку, чтобы открыть галерею и выбрать какую-нибудь фотографию, затем отладчик отобразит это сообщение . Мой лог-код действительно большой, должен ли я опубликовать какую-то конкретную часть или проблему? –

0
public class Drugi extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_drugi); 

      ImageView view = (ImageView) findViewById(R.id.imageView1); 

      Bitmap selectedphoto =(Bitmap)this.getIntent().getParcelableExtra("data"); 
      view.setImageBitmap(selectedphoto); 
     } 
    } 

Попробуйте это. , но, заменив отправку данных через действия, отправьте имя файла, как было предложено ранее.

Смежные вопросы