我可以有意地将课程作为额外内容发送吗?

2022-09-04 06:30:47

我正在尝试通过额外的类名,如何做到这一点?

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

我想在设置类中获取类名,但我不希望它成为,因为我将像这样使用这个类名:String

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

答案 1

您可以使用此代码

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

并在设置类

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

答案 2

比接受的答案更整洁的方法是使用 或 。SerializableParcelable

以下是如何使用它的示例:Serializable

在您的第一次活动中...

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

然后在你的第二个活动中...

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

这样做几乎是一样的,除了你会在上面的代码中用.Parcelableextras.getSerializable("EXTRA_NEXT_ACTIVITY_CLASS")extras.getParcelable("EXTRA_NEXT_ACTIVITY_CLASS")

Parcelable 方法将更快,但更难设置(因为您需要实现第三个活动 - 请参阅 http://developer.android.com/reference/android/os/Parcelable.html)。Parcelable