我是Android的新手,想知道为什么会这样做。如果我在res文件夹中有一组图像,我想根据用户选择显示它们,以便Mainactivity如下: - < / p>
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的东西是如何真正起作用的。这在我看来在逻辑上是正确的。
答案 0 :(得分:1)
您无法将drawable
设置为setContentView
,但您可以这样做:
setContentView(R.layout.MyLayout);
ImageView view = (ImageView)findViewById(R.id.myviewid);
view.setImageResource(R.drawable.img1);
在每次点击中添加view.setImageResource(R.drawable.img1);
即可更改imageView
资源。
答案 1 :(得分:0)
如果您仔细查看文档,可以看到setContentView方法的定义:
public void setContentView (int layoutResID)
如果你注意到,方法收到 layoutResId ,关键字是布局,记住android使用了逻辑(view-controller),一个activity是控制器并且布局是视图。您可以在视图中使用可视元素,例如图像(在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,在此ImageView中,id为selected_image,您将显示选择图像。
在您的活动中,您需要输入下一个代码(想象一下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);
}
}