0

我是 android 新手,想知道为什么 thiswont 工作。如果我的 res 文件夹中有一组图像,我想根据用户的选择显示它们,这样 Mainactivity 如下所示:-

   public class Activity3 extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.drawable.img1);//here i put the image name
        }
    }

Suppose i use this code snippet
   public class Activity3 extends Activity {
        public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   if(R.id.text1=='1')
      setContentView(R.drawable.img1);
    else
      setContentView(R.drawable.img2);

}
    }

这不起作用。但我想知道为什么,android 的东西是如何真正工作的。这在我看来在逻辑上是正确的。

4

2 回答 2

1

您不能设置drawablesetContentView,但可以改为:

setContentView(R.layout.MyLayout);     
    ImageView view = (ImageView)findViewById(R.id.myviewid);
        view.setImageResource(R.drawable.img1);

在每次单击添加view.setImageResource(R.drawable.img1);以更改imageView资源。

于 2013-06-26T21:05:39.993 回答
0

如果您更仔细地查看文档,可以看到 setContentView 方法的定义:

public void setContentView (int layoutResID)

如果你注意到,该方法接收一个layoutResId,关键字是layout,记住 android 使用了逻辑(视图 - 控制器),一个活动是控制器,一个布局是视图。您可以在视图中包含视觉元素,例如图像(在 android 中可以包含在 ImageView 中)。

例如,您可以将 xml 布局定义为下一种方式:

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

</ImageView> 

此 xml 仅包含一个 ImageView,在此带有 id selected_image 的 ImageView 中,您将显示选择图像。

在您的活动中,您需要放置下一个代码(想象一下 xml 布局调用 image_layout.xml):

public class Activity3 extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image_layout);

        //here you need find the ImageView in this layout
        ((ImageView) findViewById(R.id.selected_image).setImageResource(R.drawable.img1);
    }
}
于 2013-06-26T21:36:30.240 回答