Max Hinkul
Max Hinkul

Reputation: 141

How to use onClick method, created using switch

do you guys have an idea how I can use this way of setting onClick actions. I really don't want to create an object for each button in onCreate method even though it doesn`t slow app much, but I still want to write a solid code. Thanks for a help!

private void onClick(View v) {
    switch (v.getId()) {
        case R.id.houseButton:
            Log.d("onClick","Housebutton worked");
            houseNumber += 1;
            saveToFile();

            break;
        case R.id.penthouseButton:
            Log.d("onClick","Penthouse worked");
            penthouseNumber += 1;
            saveToFile();
            break;
        case R.id.ferrariButton:
            Log.d("onClick","Ferrari worked");
            ferrariHumber += 1;
            saveToFile();
            break;
        case R.id.goBackButton:
            Log.d("onClick","goBackButton worked");
            Intent intent = new Intent(BuyListActivity.this,MainActivity.class);
            startActivity(intent);
            break;
    }
}

Upvotes: 2

Views: 38

Answers (2)

Aakash
Aakash

Reputation: 5261

This is how you can do it:

  public class SampleActivity extends AppCompatActivity implements View.OnClickListener{
        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sample);
            Log.d("onCreateBuyList", "Started");

            Button buyHouseButton = (Button) findViewById(R.id.houseButton);
            Button buyPenthouseButton = (Button) findViewById(R.id.penthouseButton);
            Button buyFerrariButton = (Button) findViewById(R.id.ferrariButton);
            Button goBackButton = (Button) findViewById(R.id.goBackButton);
            buyHouseButton.setOnClickListener(this);
            buyHouseButton.setOnClickListener(this);
            buyHouseButton.setOnClickListener(this);
            goBackButton.setOnClickListener(this);

        }


        @Override
        public void onClick(View v) {
            switch (v.getId()) {
    case R.id.houseButton:
        Log.d("onClick","Housebutton worked");
        houseNumber += 1;
        saveToFile();

        break;
    case R.id.penthouseButton:
        Log.d("onClick","Penthouse worked");
        penthouseNumber += 1;
        saveToFile();
        break;
    case R.id.ferrariButton:
        Log.d("onClick","Ferrari worked");
        ferrariHumber += 1;
        saveToFile();
        break;
    case R.id.goBackButton:
        Log.d("onClick","goBackButton worked");
        Intent intent = new Intent(BuyListActivity.this,MainActivity.class);
        startActivity(intent);
        break;
}
        }
    }

Upvotes: 1

Ibukun Muyide
Ibukun Muyide

Reputation: 1298

just Implement onClickListener in your class and set the method setOnClickListener(this), this means its the listener for the class.

something like this

public class someclass  extends Actitivy implements OnClickListener{
...
Button button1 = findViewById(R.id.houseButtoon);
Button button2 = findViewById(R.id.penthouseButton);
Button button3 = findViewById(R.id.ferrariButton);
Button button4 = findViewById(R.id.goBackButton);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
...

}



@Override
public void onClick(View v) {

    switch (v.getId()) {
    case R.id.houseButton:
        Log.d("onClick","Housebutton worked");
        houseNumber += 1;
        saveToFile();

        break;
    case R.id.penthouseButton:
        Log.d("onClick","Penthouse worked");
        penthouseNumber += 1;
        saveToFile();
        break;
    case R.id.ferrariButton:
        Log.d("onClick","Ferrari worked");
        ferrariHumber += 1;
        saveToFile();
        break;
    case R.id.goBackButton:
        Log.d("onClick","goBackButton worked");
        Intent intent = new Intent(BuyListActivity.this,MainActivity.class);
        startActivity(intent);
        break;
}


}

Upvotes: 0

Related Questions