Reputation: 141
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
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
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