我有以下代码来调用新活动
现在我想使用变量来调用新活动
String var1,var2,var3; VAR1 = “登录”; VAR2 = “注册”; VAR3 = “多”;
Intent i;
i = new Intent(Favorites.this, Login.class); --> login.class with var
startActivity(i);
任何人都可以指导我如何实现这个目标吗?
答案 0 :(得分:8)
已修改:已添加变量活动类。
您可以将intent上的变量设置为intent中的extras。您可以轻松地将类名传递给您的意图。所以你可以说:
Class activityClass = Login.class; // This could be passed in as a variable.
Intent i;
i = new Intent(Favorites.this, activityClass); --> login.class with var
i.putExtra("var1", "Login");
i.putExtra("var2", "Signup");
i.putExtra("var2", "more");
startActivity(i);
您还可以将变量放在一个包中,并将整个包作为附加内容传递,如下所示:
Class activityClass = Login.class;
Intent i;
i = new Intent(Favorites.this, activityClass); --> login.class with var
Bundle bundle = new Bundle();
bundle.putString("var1", "Login");
bundle.putString("var2", "Signup");
bundle.putString("var2", "more");
i.putExtras(bundle);
startActivity(i);
答案 1 :(得分:4)
您无法将String作为参数传递给它。
使用if或switch语句在您拥有的不同选项之间切换。
这样的事可能......
Intent i;
switch(var)
case:Login
i = new Intent(Favorites.this, Login.class);
break;
case:Signup
i = new Intent(Favorites.this, Signup.class);
break;
case:More
i = new Intent(Favorites.this, More.class);
break;
startActivity(i);
答案 2 :(得分:1)
通过Maurits提供的链接,您还可以查看putExtras
方法。
查看更多信息here并搜索putExtra(网址在SO上看起来不太好)
*编辑:
来自Donal Rafferty的帖子,我想我现在明白你在OP中的意思了。
您可以做的是以下内容:
String theClass = "Login";
StringBuilder myAction = new StringBuilder("com.yourpackage.");
myAction.append(theClass);
Intent i = new Intent(myAction.toString());
startActivity(i)
myAction字符串(在此示例中为com.yourpackage.Login
应在AndroidManifest.xml中的活动
来自doc:
public Intent(String action)
自:API级别1 使用给定操作创建意图。所有其他字段(数据,类型,类)都为空。请注意,该操作必须位于命名空间中,因为Intents在系统中全局使用 - 例如,系统VIEW操作是android.intent.action.VIEW;应用程序的自定义操作类似于com.google.app.myapp.CUSTOM_ACTION。
答案 3 :(得分:1)
答案 4 :(得分:0)
如果要添加数据,则必须使用不同的Intent构造函数:
public Intent(String action, Uri uri, Context packageContext, Class<?> cls)
在uri中,您可以输入自己的信息。有关详细信息,请参阅this link。
答案 5 :(得分:0)
您可以使用变量启动意图,例如
Intent intent = new Intent();
String packageName = "my.package";
String className = "com.package.MyActivity";
intent.setClassName(packageName, className);
startActivity(intent);
答案 6 :(得分:0)
对于
String activity="com.namespace.MainActivity";
这可以做到:
private void openActivity(String activity, Context context) {
try {
Class cls = Class.forName(activity);
Intent intent = new Intent(context, cls);
context.startActivity(intent);
} catch (ClassNotFoundException e) {
Log.e(TAG,"Class was not found"+ e.getLocalizedMessage());
}catch (Exception e){
Log.e(TAG,"Error occurred"+ e.getLocalizedMessage());
}
}