2

私は自分が何をすべきかについて少し混乱しています。フラグメントについて読んだことがありますが、ここでそれらを使用する必要があるかどうかはわかりません。main_layoutファイルに3つのボタンがあります。私が間違ってやっているのは(私が知っている)、3つの異なる(しかし本当に似ている)結果のxmlファイルと3つのactivity.javaファイルがあるということです。結果ページは同じですが、テキストが異なります。これほど多くのJavaファイルなどを用意する理由はありません。もっと良い方法が必要だと思いますか?

main_layout.xmlには、3つのImageButtonがあります。

ここに画像の説明を入力してください

私の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つのボタンすべてを1つのアクティビティにマップします。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 に答える