1

我在我的活动中使用开关盒。我正在使用 6 个案例,他们打开相同的活动 Map.java。现在在 Map.java 中,我想从哪个按钮打开这个活动并想在那里执行 toast。请给我指路。提前谢谢。这是我的代码

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

您需要创建一个包并将参数传递给第二个活动:

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

在第二个活动中:

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. 使用 Intent 的方法将 Button 名称放入putExtra()Intent。

例如(第二步):

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