【问题标题】:Launching intent from a class outside an activity从活动之外的类启动意图
【发布时间】:2011-03-22 06:02:05
【问题描述】:

我有两项活动,其中一项名为MyActivity。我希望他们都能够使用位于类中的函数,我们可以调用MyClass。在MyClass 中,我尝试使用意图来启动活动AnotherActivity。由于构造函数将上下文作为参数,因此我只是尝试将来自活动的上下文存储在构造函数中,然后在尝试创建意图时使用它。

class MyClass {
  private Context cxt;

  MyClass(Context cxt) {
    this.cxt = cxt;
  }

  startIntent() {
    Intent intent = new Intent(cxt, AnotherActivity.class);
    startActivity(intent); // this line throws a NullPointerException
  }
}

MyActivity 中使用该类的代码如下所示:

myClassObject = new MyClass(MyActivity.this);
myClassObject.startIntent();

但是,即使没有任何参数为空(使用简单的 if 语句检查),intent 似乎也为空,并抛出了 NullPointerException。为什么它不起作用,我能做些什么来解决这个问题? 我是 Android 和 Java 开发的新手,所以请尽可能简单地解释一下。

【问题讨论】:

    标签: java android oop android-intent


    【解决方案1】:
    cxt.startActivity(new Intent(cxt, AnotherActivity.class));
    

    为了确保它的意图是 NULL,而不是 startActivity 方法内部的东西,你可以添加一些检查,即

    Intent intent = new Intent(cxt, AnotherActivity.class);
    Log.d(toString(), "intent = " + intent.toString());
    cxt.startActivity(intent);
    

    【讨论】:

    • 很好,现在它按预期工作了!我不明白为什么在调用 startActivity 之前意图应该为空,而且在我运行程序时似乎不是这样。
    【解决方案2】:

    我在我的应用程序中使用了几乎相同的代码,并且运行良好。

    我怀疑在您没有向我们展示的代码中发生了其他事情;我怀疑存在一些剪切和粘贴问题——例如你在 MyClass 中调用什么 startActivity()?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多