的Android如何打开图像,并在第二个活动显示它

问题描述:

我的应用程序工作编辑照片的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> 

这可能是位图太大传递周围像那。你为什么不反而把

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

在你的第一个活动。而在你的第二个

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

应该是你的应用程序那么麻烦,至少

+0

我试着把这部分代码,但仍然无法正常工作。 现在我上帝错误“源找不到” – 2013-05-10 13:24:00

+0

你可以请你发布你的logcat?当你调用i.putExtra(“data”,filepath)时,filepath的内容是什么? – DigCamara 2013-05-10 14:42:44

+0

文件路径内容应该从选择的照片中取得。 问题从我从gallery中选择照片时开始。我可以点击一个按钮,比我可以打开图库并选择一些照片,然后调试器显示该消息 我的logcat真的很大,我应该发布一些特定的部分或问题? – 2013-05-11 13:27:04

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); 
     } 
    } 

尝试。 但是,替换通过活动发送数据,请按照以前建议的方式发送文件名。