我有以下的代码来调用新的活动如何在意图调用新活动时使用变量?
现在我想用变量调用新的活动
字符串VAR1,VAR2,VAR3; var1 =“登录”; var2 =“注册”; var3 =“more”;
Intent i;
i = new Intent(Favorites.this, Login.class); --> login.class with var
startActivity(i);
任何一个可以指导我如何实现这个?
我有以下的代码来调用新的活动如何在意图调用新活动时使用变量?
现在我想用变量调用新的活动
字符串VAR1,VAR2,VAR3; var1 =“登录”; var2 =“注册”; var3 =“more”;
Intent i;
i = new Intent(Favorites.this, Login.class); --> login.class with var
startActivity(i);
任何一个可以指导我如何实现这个?
你不能在作为传递一个字符串该参数必须是一个Activity。
使用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);
如果你想添加的数据,你将不得不使用不同的意图构造:
public Intent(String action, Uri uri, Context packageContext, Class<?> cls)
在URI你可以把你自己的信息。有关更多详情,请参阅this link。
从Maurits的给的链接,你也可以看看putExtras
方法。
查看更多信息here和搜索putExtra(犯规好看所以URL)
*编辑:
从多纳尔拉弗蒂后,我想我现在明白你在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:
公众意向(串动)
自:API等级1 与给定的交流创建意图灰。所有其他字段(数据,类型,类)都为空。注意动作一定要在一个命名空间,因为意图在系统中全球使用 - 例如系统视图动作android.intent.action.VIEW;应用程序的自定义操作就像com.google.app.myapp.CUSTOM_ACTION一样。
我假设MyClass的开始的意图。 append(theClass)应该是myAction.append(theClass) – 2010-02-03 07:51:44
@Maurits - 哎呀,我只是修复它 - 谢谢 – ccheneson 2010-02-03 11:56:15
编辑:增加了变量活动类。
您可以将意图上的变量设置为intent中的额外值。您可以轻松地将类名传递给您的意图。所以,你可以说:
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);
试试这个
try {
String className = 'com.www.tutorialforandroid.com.openActivity';
Intent openNewIntent = new Intent(this, Class.forName(className));
startActivity( openNewIntent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
可以使用一个变量,像这样
Intent intent = new Intent();
String packageName = "my.package";
String className = "com.package.MyActivity";
intent.setClassName(packageName, className);
startActivity(intent);
只是你不能切换Java中的字符串;-) – Matthias 2010-02-02 14:55:16
真的,但你必须让人们自己找出一些事情:-) – 2010-02-02 15:01:02