这就是我想要做的(我现在要遵循的代码):
对我主要活动中的所有按钮使用1个onclick监听器(我相信我找到了正确的实现 - 请参阅代码以提出任何建议)。按下按钮即可开始新活动;但是,根据按下的按钮修改被调用活动的xml中显示的图像。我已经成功修改了图像(被称为xml),这样当我点击一个按钮时,我设置的图像就会成功显示出来。
这就是奇怪的地方,在显示“设置”图像后,我在xset代码中设置的占位符图像会立即显示在“设置”图像之后。
然后手机上的后退按钮返回到我以编程方式“设置”的图像,然后手机上的另一个后退按钮关闭应用程序。
我做错了什么?
我的代码如下:
MainActivity onCreate方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton b01 = (ImageButton)findViewById(R.id.imageButton01);
b01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.image);
ImageView iview = (ImageView) findViewById(R.id.imageView1);
iview.setImageResource(R.drawable.amiga);
startActivity(new Intent(MainActivity.this, MyImage.class));
}
});
}
MyImage活动:
public class MyImage extends Activity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
}
}
布局Image.xml
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="Image"
android:paddingTop="60dp"
android:src="@drawable/ic_launcher"
/>
</RelativeLayout>
答案 0 :(得分:0)
你的设计不好。对于相同的活动,setContentView
两次是不好的。
每个活动都有自己的布局。
http://developer.android.com/guide/components/activities.html
相反,您可以传递图像的资源ID,并将图像设置为MyImage
中的imageview。
根据您点击的按钮,您可以传递相应的资源ID。
所以改为
b01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, MyImage.class);
i.putExtra("key",R.drawable.amiga);
startActivity(i);
}
});
在MyImage
public class MyImage extends Activity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
ImageView iview = (ImageView) findViewById(R.id.imageView1);
int resid = getIntent().getIntExtra("key");
iview.setImageResource(resid);
}
}
答案 1 :(得分:0)
在activity_main.xml中创建ImageView(ID:imageview),试试这段代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton b01 = (ImageButton)findViewById(R.id.imageButton01);
ImageView view = (ImageView) findViewByID(R.id.imageview);
int count = 0;
Int[] image_array = {R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image};
view.setImageResource(image_array[count]);
b01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(count < image_array.lenght)
count++;
else
count = 0;
view.setImageResource(image_array[count]);
}
});