I\'m trying to do 3 intents to start a new activity, however I find that I always get an error. I\'m putting my code onto main.java code:
public class Main e
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
public class Main extends Activity {
Button service;
Button gallery;
Button contact;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service = (Button)findViewById(R.id.Services);
service.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent (Main.this, servicesActivity.class);
startActivity(intent);
}
});
gallery = (Button)findViewById(R.id.Gallery);
gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent1 = new Intent (Main.this, galleryActivity.class);
startActivity(intent1);
}
});
contact = (Button)findViewById(R.id.Contact);
contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent2 = new Intent (Main.this, contactActivity.class);
startActivity(intent2);
}
});
}