我刚刚报名以寻求帮助。
我正在做一个显示图片库的应用程序。当您单击任何图像时,它必须打开图像并显示它。
有两个活动:“ 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。