1

活動でスイッチケースを使用しています。同じアクティビティMap.javaを開く6つのケースを使用しています。今 Map.java で、このアクティビティが開いているボタンからそれを取得し、そこでトーストを実行したいと考えています。道を教えてください。事前に感謝します。ここに私のコードがあります

public void buttonClick(View v) {

    switch (v.getId()) {
    case R.id.imageButton1:
        img3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;

    case R.id.imageButton2:
        img4.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;
    case R.id.imageButton3:

        img5.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;
    case R.id.imageButton4:
        img6.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;
    case R.id.imageButton5:
        img7.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;
    case R.id.imageButton6:
        img8.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent(Report.this, Map.class));
            }
        });
        break;
    }
}
4

2 に答える 2

4

バンドルを作成し、パラメーターを 2 番目のアクティビティに渡す必要があります。

public void buttonClick(View v) {
    Intent intent = new Intent(Report.this, Map.class);
    intent.putExtra("button", v.getId());
    startActivity(intent);
}

2 番目のアクティビティでは:

public class Map extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int caller = getIntent().getIntExtra("button", 0); 
        switch (caller) {
        case R.id.imageButton1:
            //do something
            break;
        case R.id.imageButton2:
            //do something
            break;
        case R.id.imageButton3:
            //do something
            break;
        case R.id.imageButton4:
            //do something
            break;
        case R.id.imageButton5:
            //do something
            break;
        case R.id.imageButton6:
            //do something
            break;
        }
    }
}
于 2013-10-25T07:00:18.887 に答える
1

試す:

  1. 冗長なコードを記述しないでください。代わりに、共通のクリック リスナー クラスを定義し、すべてのボタンに同じものを割り当てます。
  2. putExtra()Intent のメソッドを使用して、ボタン名をインテントに入れます。

例(2番目のステップ):

Intent intent = new Intent(Report.this, Map.class);
intent.putExtra("WhichButton", "ButtonName");
startActivity();
于 2013-10-25T06:59:49.520 に答える