-3

编辑:我无法让它正常工作。可能是因为我不知道我在做什么。无论如何,这是我的代码。如果有人可以提供帮助,我将非常感激:我需要它来显示相应模组的电池情绪图像......

主题:

package com.cydeon.plasmamodz;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class Themes extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.themes);
    ActionBar actionBar = getActionBar();
    actionBar.hide();
    Button Plus = (Button) findViewById(R.id.button1);
    Button Blue = (Button) findViewById(R.id.button2);
    Plus.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(Themes.this, Bmod.class);
            i.putExtra("drawableResource", R.drawable.blue);
            Themes.this.startActivity(i);

        }
    });

    Blue.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent a = new Intent(Themes.this, Bmod.class);
            a.putExtra("drawableResource1", R.drawable.plus);
            Themes.this.startActivity(a);

        }
    });


}

}

模组:

package com.cydeon.plasmamodz;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

public class Bmod extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.battery);

    Intent i = getIntent();
    int drawableResource = i.getIntExtra("drawableResource", R.drawable.blue);
    ImageView img = (ImageView) findViewById(R.id.iv1);
    img.setImageResource(R.drawable.blue);

    Intent a = getIntent();
    int drawableResource1 = a.getIntExtra("drawableResource1", R.drawable.plus);
    ImageView img1 = (ImageView) findViewById(R.id.iv1);
    img1.setImageResource(R.drawable.plus);
}



}

电池(xml):

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

<Button
    android:id="@+id/bInstall"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="Install" />

<Button
    android:id="@+id/bReturn"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Return" />

<ImageView
    android:id="@+id/iv1"
    android:layout_width="match_parent"
    android:layout_height="800dp" />

</RelativeLayout>
4

3 回答 3

3
Intent i = new Intent(this, BaseClassForMod);
i.putExtra("drawableResource", R.drawable.this_mod_drawable);
startActivity(i);

然后在那个 Activity 的 onCreate() 中:

Intent i = getIntent();
int drawableResource = i.getIntExtra("drawableResource", R.drawable.default);
//Get a reference to your ImageView...
imageView.setImageResource(drawableResource);

不要相信这段代码可以编译,但这是一般的想法。对所有这些都使用相同的 Activity,在 Intent 中传递正确的资源 ID(例如,对于 mod1,发送 mod1 的可绘制 ID),然后在 Activity 中,检查该资源 ID 并以编程方式设置它。

于 2013-02-18T21:45:23.840 回答
1

如果每个类都做同样的事情,你就不应该需要 50 个类和 50 个 xml 布局。做一个活动和一个布局。当用户选择某些东西时,将某种 id 作为 Intent extra 传递给第二个活动,以便它可以加载任何合适的项目。我不知道您的数据是如何建模的,但应该有一种方法来唯一标识每个选项(如果没有,您应该实施一个)。

您的第一个活动也不需要每个项目的按钮。使用 ListView 和 Adapter,然后您只需要为一行提供布局。

于 2013-02-18T21:44:26.063 回答
1

只做一个活动。在其中获取对您的图像的引用:

ImageView iv = (ImageView)findViewById(R.id.yourImgId);

然后将图片设置为您想要的任何一个:

iv.setImageResource(R.drawable.battery_img_1);
于 2013-02-18T21:44:42.417 回答