You can do all of them inside the same listener
. Set all the listeners
this way
service.setOnClickListener(this);
gallery.setOnClickListener(this);
then use one function and check the id
of the View
that was clicked
public void onClick2 (View v) {
Intent intent = new Intent();
switch (v.getId()) // get the id of the Button clicked
{
case (R.id.Services):
intent = new Intent(Main.this, servicesActivity.class);
break;
case (R.id.Gallery):
intent = new Intent(Main.this, galleryActivity.class);
break;
...
}
startActivity(intent);
You can actually clean it up even more to not repeat variables with something like this
public void onClick(View v)
{
Intent intent = new Intent(); // create an Intent
String act = null; // name for Activity to start with Intent
String shield = "com.your.package."; // set package name
switch (v.getId()) // get the id of the Button clicked
{
case (R.id.Services):
act = package + "Services"; // if Services button clicked use Services as the activity
break;
case (R.id.Gallery):
act = package + "GalleryActivity";
break;
...
}
try
{
intent = new Intent(Main.this, Class.forName(act)); // create your Intent by changing your String act to a class name
startActivity(intent); // start the Intent as normal
}
catch (ClassNotFoundException e){ // don't forget to catch invalid class names
e.printsStackTrace();
}
And as dymeh pointed out, make sure your Activity
implements OnClickListener
This could probably be cleaned up a little more and may look more difficult but I use something like this in a custom menu and other places and it works nicely. It cuts down on separate functions and creating separate Intents
. If you have to add something later or want to reuse the code it makes it a little easier, IMHO
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…