Android:简化许多类和xml

时间:2013-02-18 21:34:32

标签: android xml class

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

主题:

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);

        }
    });


}

}

Bmods:

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>

3 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

仅制作一项活动。在其内部获得您的图像的参考:

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

然后将图片设置为您想要的图片:

iv.setImageResource(R.drawable.battery_img_1);
相关问题