如何在意图中调用新活动时使用变量?

时间:2010-02-02 13:11:33

标签: android android-activity

我有以下代码来调用新活动

现在我想使用变量来调用新活动

String var1,var2,var3; VAR1 = “登录”; VAR2 = “注册”; VAR3 = “多”;

Intent i; 
i = new Intent(Favorites.this, Login.class);  --> login.class with var 
startActivity(i); 

任何人都可以指导我如何实现这个目标吗?

7 个答案:

答案 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); 

Here is an example

您还可以将变量放在一个包中,并将整个包作为附加内容传递,如下所示:

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());
    }
}