简体   繁体   English

在其他活动中处理开关箱

[英]Handle the switch cases in another activity

I am using the switch case in my activity. 我在活动中使用开关盒。 I am using 6 cases they open the same activity Map.java. 我正在使用6种情况,他们打开相同的活动Map.java。 Now in Map.java i want to get that from which button this activity open and want to perform toast there. 现在在Map.java中,我想从哪个按钮打开此活动,并希望在那里进行敬酒。 Please give me the way. 请给我路。 thanx in advance. 提前谢谢。 here is my code 这是我的代码

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;
    }
}

You need to create a bundle and pass the parameter to the second activity: 您需要创建一个包并将参数传递给第二个活动:

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

In the second activity: 在第二个活动中:

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;
        }
    }
}

Try: 尝试:

  1. Don't write redundant code, Instead define a common click listener class and assigned the same to every buttons. 不要编写冗余代码,而是定义一个公共的Click侦听器类,并将其分配给每个按钮。
  2. Put Button name in intent by using putExtra() method of Intent. 通过使用putExtra()方法将Button名称放入Intent中。

For example (2nd step): 例如(第二步):

Intent intent = new Intent(Report.this, Map.class);
intent.putExtra("WhichButton", "ButtonName");
startActivity();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM