2

我有点困惑我应该做什么。我已经阅读了有关 Fragments 的信息,但我不确定是否应该在这里使用它们。我的 main_layout 文件中有 3 个按钮。我做错了什么(我知道)是我有 3 个不同(但非常相似)的结果 xml 文件和 3 个 activity.java 文件。结果页面是一样的,只是文字不同。没有理由拥有这么多 java 文件等。我知道必须有更好的方法吗?

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

在此处输入图像描述

在我的 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));
4

2 回答 2

2

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

于 2013-03-13T19:26:53.833 回答
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));
    }
}
于 2013-03-13T19:30:35.300 回答