Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 如何在一个类中显示我保存在另一个类中的图片_Java_Android_Eclipse_Image - Fatal编程技术网

Java 如何在一个类中显示我保存在另一个类中的图片

Java 如何在一个类中显示我保存在另一个类中的图片,java,android,eclipse,image,Java,Android,Eclipse,Image,我有一个应用程序,你可以制作和保存图片。现在我将在另一个类中显示此图片。我刚开始用java编程,不知道怎么做 FotoMaker.java: package com.example.random; import java.io.FileNotFoundException; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import androi

我有一个应用程序,你可以制作和保存图片。现在我将在另一个类中显示此图片。我刚开始用java编程,不知道怎么做

FotoMaker.java:

package com.example.random;

import java.io.FileNotFoundException;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.net.Uri;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class FotoMaker extends Activity 
    { 
    ImageView iv;
    Uri uriOfPicture;


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

        iv = (ImageView) findViewById(R.id.imageView);
        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener()
        { 


            @Override 
            public void onClick (View v){
                takeImageFromCamera();

            } 
        }); 
        } 
        @Override 
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        { 
            if(requestCode == 0)
            { 
                Bitmap image=createBitmapFromURI(uriOfPicture);
                iv.setImageBitmap(image);
            } 
        } 
@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (uriOfPicture != null) {
            outState.putString("cameraImageUri", uriOfPicture.toString());
        }
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState.containsKey("cameraImageUri")) {
            uriOfPicture = Uri.parse(savedInstanceState.getString("cameraImageUri"));
        }
    }
public void takeImageFromCamera(){
        String fileName = "new-photo-name.jpg";
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION,
                "Image captured by camera");

        uriOfPicture = getContentResolver()
                .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        values);  
        Log.i("uri",uriOfPicture.toString());
        Intent intent = new Intent(
                MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uriOfPicture);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
        startActivityForResult(intent,
                0);


    }

public Bitmap createBitmapFromURI(Uri uri) {

        Bitmap bitmap = null;
        try {
            bitmap = BitmapFactory.decodeStream(getApplicationContext()
                    .getContentResolver().openInputStream(uri));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        if (bitmap != null)
            return Bitmap.createScaledBitmap(bitmap, 100, 100, true);
        else {
            return null;
        }
    }


    }
ShowPhoto.java:

package com.example.random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class ShowPhoto extends Activity{

    ImageView iv;

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

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

        }
}

一旦有了URI,就可以将其传递给新活动。因此,在FotoMaker的onActivityResult中,只需启动ShowPhoto活动并额外发送uriOfPicture

Intent intent = new Intent(this, ShowPhoto.class);
intent.putExtra("uri", uriOfPicture);
startActivity(intent);
在ShowPhoto活动中,只需捕捉论点并展示:

String uriOfPicture = getIntent().getStringExtra("uri");
Bitmap image = createBitmapFromURI(uriOfPicture);
iv.setImageBitmap(image);

我假设您的大部分代码都已经运行了。

图像保存在文件中的什么位置?我在你的代码中找不到它。。。通常是ImageIO.write()和ImageIO.read()来保存和加载。我在Bitmap image=createBitmapFromURI(uriOfPicture)这一行遇到错误;告诉我方法未定义。我应该创建这个方法吗?这是我在ShowPhoto.java中得到的唯一代码,顺便说一句,我在我的应用程序的开头有一个菜单,所以他们可以选择“viewphoto”按钮来查看他们制作的照片。当然,你应该将createBitmapFromURI方法移动到ShowPhoto活动中。