Question

I'm trying to pass class name with extra, how to do that ?

Intent p = new Intent(StartScreen.this, Setting.class);
p.putExtra(" ",StartScreen.this);

I want to get the class name in Setting class but I don't want it to be String cause I'm going to use this class name like that :

Bundle extras = getIntent().getExtras();
extras.getString("class");
Intent i = new Intent(Setting.this, class);
startActivity(i);
Was it helpful?

Solution

you can use this code

Intent p = new Intent(StartScreen.this, Setting.class);
p.putExtra("class","packagename.classname");

and in setting class

Bundle extras = getIntent().getExtras();
String classname=extras.getString("class");
Class<?> clazz = Class.forName(classname);
Intent i = new Intent(Setting.this, clazz);
startActivity(i);

OTHER TIPS

A tidier way than the accepted answer would be to use Serializable or Parcelable.

Here is an example of how to do it using Serializable:

In your first activity...

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("EXTRA_NEXT_ACTIVITY_CLASS", ThirdActivity.class);
startActivity(intent);

Then in your second activity...

Bundle extras = getIntent().getExtras();
Class nextActivityClass = (Class<Activity>)extras.getSerializable("EXTRA_NEXT_ACTIVITY_CLASS");
Intent intent = new Intent(SecondActivity.this, nextActivityClass);
startActivity(intent);

Doing it with Parcelable is pretty much the same, except you would replace extras.getSerializable("EXTRA_NEXT_ACTIVITY_CLASS") in the above code with extras.getParcelable("EXTRA_NEXT_ACTIVITY_CLASS").

The Parcelable method will be faster, but harder to set up (as you need to make your third Activity implement Parcelable - see http://developer.android.com/reference/android/os/Parcelable.html).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top