【问题标题】:Android start intent via string nameAndroid 通过字符串名称启动意图
【发布时间】:2016-06-06 13:24:20
【问题描述】:
 String c="MainActivty.class";       
 Intent ints =new Intent(getApplication(),c);
 startActivity(ints);

如何通过单击按钮执行此操作,即将 c 指定为 Intent,或者有其他方法可以执行此操作吗?

问题是我已将 c 设置为 intent,但它不起作用。

【问题讨论】:

  • 您想在单击按钮时启动一个意图??
  • 是的,我想在点击按钮时开始意图
  • 你为什么不直接使用Class
  • 您可以创建一个类数组,并将索引保​​存为书签。
  • 呃,不是这样。无论您打算保存书签,但您只是为索引保存ints,而不是您的Strings。例如,像这样创建您的数组:Class<?>[] activities = new Class<?>[numActivities]; activities[0] = MainActivity0.class; ...,并像这样创建一个Intentnew Intent(context, activities[0])。除此之外,SharedPreferences 可能足以存储书签索引。

标签: java android android-studio android-intent


【解决方案1】:

没有构造函数意图(上下文上下文,字符串)。所以你不能传递一个字符串来创建一个意图。您只能使用 String 来设置该 Intent 的 Action。您尝试使用的构造函数将 Class cls 而不是 String 作为第二个参数。当您使用 Intent(getContext(), "MainActivity.class") 时,编译器不会创建 String 它会创建 Class 实例。

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

【讨论】:

  • 我没有说我正在这样做。我说我怎么能通过在运行时不知道的类,它的意图是什么类
  • 在这种情况下,您可以创建多个意图,然后基于按钮单击、变量、sharedpreferences 键或其他内容,我将启动相应的意图。
【解决方案2】:

我明白你的问题,这么多人给你点:

假设我在这里有一堂课: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多