通过字符串名

时间:2016-06-06 13:24:21

标签: java android android-studio android-intent

 String c="MainActivty.class";       
 Intent ints =new Intent(getApplication(),c);
 startActivity(ints);

如何通过单击按钮来执行此操作,即将c指定为Intent,还是有其他方式可以执行此操作?

问题是我已将c设置为intent但它无效。

2 个答案:

答案 0 :(得分:1)

我理解你的问题,很多人都给你了 - 点:

假设我在这里有一个班级:com.mydomain.myproject.activity.MyActivity

字符串必须类似于:"com.mydomain.myproject.activity.MyActivity"

然后开始意图:

Class newclass = null;
//add this outside of OnCreate
final Activity thisActivity = this;
String activityString="com.mydomain.myproject.activity.MyActivity";
    try {
      newclass = Class.forName(activityString);
    } catch (ClassNotFoundException c) {
        c.printStackTrace();
    }

    if(newclasss != null) {
        nextIntent = new Intent(thisActivity, newclass);
        startActivity(nextIntent);
    } else {
        Toast.makeText(getApplicationContext(),"new class null",Toast.LENGTH_SHORT).show();
    }

另一个好的答案是:https://stackoverflow.com/a/37060977/5047398

答案 1 :(得分:1)

没有Constructor Intent(Context context,String s)。因此,您无法传递String来创建Intent。您只能使用String来设置该Intent的Action。您尝试使用的构造函数将第二个参数视为Class cls而不是String。当您使用Intent(getContext()," MainActivity.class")时,编译器不会创建一个String,而是创建一个Class实例。

https://developer.android.com/reference/android/content/Intent.html