简体   繁体   中英

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. Now in Map.java i want to get that from which button this activity open and want to perform toast there. 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.
  2. Put Button name in intent by using putExtra() method of Intent.

For example (2nd step):

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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