修改父项调用活动中显示的图像

时间:2014-01-08 03:55:44

标签: android xml android-layout android-activity

这就是我想要做的(我现在要遵循的代码):

对我主要活动中的所有按钮使用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>

2 个答案:

答案 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]);
        }
    });