Android 如何向其他活动显示消息和照片

Android 如何向其他活动显示消息和照片,android,android-studio,Android,Android Studio,我正在尝试创建一个简单的消息应用程序,向其他活动发送文本和照片,但我只知道如何显示文本,你能教我如何显示照片吗?我只是一个新的程序员,我想学习,所以我希望你们能帮助我:) 这是我关于发送活动的代码 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView (R.layout.main); button =

我正在尝试创建一个简单的消息应用程序,向其他活动发送文本和照片,但我只知道如何显示文本,你能教我如何显示照片吗?我只是一个新的程序员,我想学习,所以我希望你们能帮助我:)

这是我关于发送活动的代码

public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView (R.layout.main);

        button = (Button) findViewById(R.id.btn_attach_pic);
        imageView = (ImageView) findViewById(R.id.btn_img_view);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent camera_intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
                File file = getFile();
                camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                startActivityForResult(camera_intent, CAM_REQUEST);
            }
        });

    }

    public void sendMessage (View view){
        message_text = (EditText) findViewById(R.id.editText);
        String message = message_text.getText().toString();
        Intent intent = new Intent (this, NextActivity.class);
        intent.putExtra(MESSAGE_KEY,message);
        startActivity (intent);
    }

    private File getFile(){
        File folder = new File("sdcard/UHelp_images");

        if(!folder.exists())
        {
            folder.mkdir();
        }
        File image_file = new File(folder,"temp.jpg");
        return  image_file;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String path = "sdcard/UHelp_images/temp.jpg";
        imageView.setImageDrawable(Drawable.createFromPath(path));
    }
这是在接收课上

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra (MESSAGE_KEY);
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        setContentView(textView);

您只需使用以下命令从其他活动加载它:

File imgFile = new  File("sdcard/UHelp_images/temp.jpg");

if(imgFile.exists()){

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);

    myImage.setImageBitmap(myBitmap);

}

希望这对您有所帮助。

您还应该传递图像的
可绘制
路径
,就像您使用
putExtras()处理邮件一样
然后在另一个
活动中
只需使用
StringKey
即可获得
可绘制的
路径
,您可以根据需要使用它

编辑 我不确定这是否是正确的
路径
,但如果是,您可以传递此
字符串
,然后从该
路径
获取
图像
,执行此操作
imageView.setImageDrawable(Drawable.createFromPath(path))或者甚至您可以传递该
Drawable
。。。并将其用于其他
活动

sdcard/UHelp_images/temp.jpg

将图像路径与文本消息一起发送,如以下代码所示:

public void sendMessage (View view){
        message_text = (EditText) findViewById(R.id.editText);
        String message = message_text.getText().toString();
        Intent intent = new Intent (this, NextActivity.class);
        intent.putExtra(MESSAGE_KEY,"sdcard/UHelp_images/temp.jpg");
        intent.putExtra(IMAGE_PATH_KEY,message);
        startActivity (intent);
    }
(我硬编码了图像路径,您可以将变量放在那里) 在接收活动时,获取该图像路径并将其存储为字符串

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra (MESSAGE_KEY);
        String ImagePath = intent.getStringExtra (IMAGE_PATH_KEY);
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        setContentView(textView);
当您在接收活动中有图像路径时,您可以按照@Cas应答代码,使用以下代码将其设置为相应的ImageView

File imgFile = new  File(ImagePath);
if(imgFile.exists()){
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
    myImage.setImageBitmap(myBitmap);
}

继续编码

为什么不像处理文本那样将图像路径作为字符串传递给下一个活动?您可以将图像转换为字符串,然后再转换回图像,但我不会这样做,因为如果您的图像很大,则会出现OutOfMemory问题。所以最好只传递路径。所以我必须为图像创建一个路径?看起来您的图像已经有一个路径(存储图像的位置)。我确信你的图像存储在设备的某个地方。谢谢你的帮助,女士:)我想你接受了我的回答。。。但是无论如何欢迎:)我必须为照片创建另一个字符串吗?我仍然有问题:(就像你把信息传递给其他活动一样,传递图片的路径,然后在其他活动中获得该路径