我刚刚报名以寻求帮助。
我正在做一个显示图片库的应用程序。当您单击任何图像时,它必须打开图像并显示它。

有两个活动:“ Galeria”和“ Imagen”。 “ Galeria”显示图像库,“ Imagen”显示单击的图像。
单击图像后,我使用Intent创建第二个活动,如下面的代码所示。

Galeria.java代码:

package com.ejemplo.galeria;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Galeria extends Activity {

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

    //Called when an image is clicked (I use ImageButtons)
    public void openImage(View view){
        Intent i = new Intent(this,Imagen.class);
        i.putExtra("IMAGEN", view.getId());
        startActivity(i);
    }
}


当按下任何ImageButton时,将调用方法'openImage()'(无论您按什么按钮,都将调用相同的方法)。这是“ main.xml”代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Galeria" >

<HorizontalScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id = "@+id/scrollview">
    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageButton
            android:id="@+id/imagen1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/imagen1"></ImageButton>
        <ImageButton
            android:id="@+id/imagen2"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/imagen2"></ImageButton>
        <ImageButton
            android:id="@+id/imagen3"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/imagen3"></ImageButton>
        <ImageButton
            android:id="@+id/imagen4"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/imagen4"></ImageButton>
        <ImageButton
            android:id="@+id/imagen5"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/imagen5"></ImageButton>
        <ImageButton
            android:id="@+id/imagen6"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/petergriffin"></ImageButton>
         <ImageButton
            android:id="@+id/imagen7"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitXY"
            android:onClick="openImage"
            android:src="@drawable/gato"></ImageButton>
    </LinearLayout>
</HorizontalScrollView>

</RelativeLayout>


因此,这是“ Image”类的代码:

package com.ejemplo.galeria;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

public class Imagen extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Intent i = getIntent();
        int id = i.getIntExtra("IMAGEN", -1);
        if(id != -1){
            ImageView iv = (ImageView) findViewById(R.id.imageV1);
            iv.setImageResource(id); //Error
            setContentView(R.layout.imagen);
        }
    }
}


这是“ imagen.xml”文件的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/imageV1"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" ></ImageView>

</LinearLayout>


因此,当我修改ImageView的源代码时,我的应用程序意外关闭,我也不知道为什么。我一直在寻求帮助,但一无所获,所以我希望有人能帮助我,我正在生气。

谢谢!

-------------------------------------------------- ----------------------------------------

-------------------------------------------------- ----------------------------------------

好,我找到了这个问题

我在R.drawable.imagen1的方法'setImageResource(id)'中更改了参数,并构造了switch case语句。

但是它一直意外关闭!!!

因此,在“ Imagen”类的“ onCreate()”方法中,我只是将“ setContentView(R.layout.imagen)”行从该方法的末尾移到了开始。

问题解决了 :)

最佳答案

所以在这里:

Intent i = new Intent(this,Imagen.class);
i.putExtra("IMAGEN", view.getId());
startActivity(i);


您只是将视图ID放入了意图,但之后:

int id = i.getIntExtra("IMAGEN", -1);
if(id != -1){
      ImageView iv = (ImageView) findViewById(R.id.imageV1);
      iv.setImageResource(id); //Error
      setContentView(R.layout.imagen);
}


您尝试将此R.id分配给图像资源,这是错误的,因为setImageResource期望使用R.drawable.my_image之类的东西。请按照javadoc

08-18 18:02