Android - 我想在我的应用程序中为多个按钮使用相同的XML布局

时间:2013-03-13 19:22:56

标签: android android-fragments

我对自己应该做的事情感到有些困惑。我读过有关碎片的内容,我不确定我是否应该在这里使用它们。我的main_layout文件中有3个按钮。我做的不正确(我知道)是我有3个不同(但非常相似)的结果xml文件和3个activity.java文件。结果页面是相同的,只是不同的文本。没有理由拥有这么多的java文件等。我知道必须有更好的方法吗?

在我的main_layout.xml中,我有3个ImageButtons:

enter image description here

在我的MainActivity.java中:

ImageButton ib1 = (ImageButton) findViewById(R.id.imageButton1);
ib1.setOnClickListener(this);

ImageButton ib2 = (ImageButton) findViewById(R.id.imageButton2);
ib2.setOnClickListener(this);

ImageButton ib3 = (ImageButton) findViewById(R.id.imageButton3);
ib3.setOnClickListener(this);

public void onClick(View v) {
    if (v.getId() == R.id.imageButton1) {
        startActivity(new Intent(Main.this, OneInfo.class));
    } else if (v.getId() == R.id.imageButton2) {
        startActivity(new Intent(Main.this, TwoInfo.class));
    } else if (v.getId() == R.id.imageButton3) {
        startActivity(new Intent(Main.this, ThreeInfo.class));

2 个答案:

答案 0 :(得分:2)

将所有3个按钮映射到单个活动。为其添加一个额外的“模式”整数,指定要使用的3种模式中的哪一种。在活动中,检查模式并使用setText设置与相应字符串不同的视图文本。

答案 1 :(得分:2)

要减少重复代码,您可以使用按钮上的标记:

int[] btnIds = { R.id.imageButton1, R.id.imageButton2, R.id.imageButton3 };
Class<?> classes = { OneInfo.class, TwoInfo.class, ThreeInfo.class };
for (int i = 0; i < btnIds.length; ++i) {
    View btn = findViewById(btnIds[i]);
    btn.setOnClickListener(this);
    btn.setTag(classes[i]);
}

public void onClick(View v) {
    Class<?> tag = (Class<?>) v.getTag();
    if (tag != null) { // just in case
        startActivity(new Intent(this, tag));
    }
}