我对自己应该做的事情感到有些困惑。我读过有关碎片的内容,我不确定我是否应该在这里使用它们。我的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));
答案 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));
}
}