当前位置: 首页 > 面试题库 >

从活动之外的班级发起意图

益阳平
2023-03-14
问题内容

我有两项活动,其中一项叫做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抛出a。为什么它不起作用,我该怎么解决?我刚开始接触Android和Java,因此请尽可能简单地进行说明。


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


 类似资料:
  • 问题内容: 我对android非常陌生,我正在尝试将用户输入的数据(他们的名字)发送到另一个活动。过去,我可以使用Intent在活动之间发送单行代码,但是我无法解决如何向两个不同的TextView发送两个不同的字符串。 这是到目前为止我的MainActivity代码: 我第二项活动MainGame的代码: 当我运行它时,我得到了两个TextView中都为“ name2”添加的内容。我需要做些什么来

  • 问题内容: 我正在阅读[Java编程语言》一书。在解释 覆盖 方法的章节中,它说: 使覆盖方法(在子类中)比在超类中更不易于访问将违反超类的约定…… 整个文本是可以理解的。我唯一的问题是什么是 超类合同 ? 合同 对 Java 类意味着什么? 问题答案: Java类中的合同类似于现实世界中的合同-在非技术方面: 同意该类将公开某些方法,某些属性和某些行为。 更多技术,从这里开始:(我加粗了) 如果

  • 在发布本文之前,我不会列出我读过的所有参考资料,但我已经广泛阅读了有关stackoverflow的类似问题,以及所有关于活动/片段生命周期和维护状态的android开发人员文档,还没有找到解决方案。 以下是我的设想: 我有一个主要的活动(PulseActivity),它使用FragmentPagerAdapter。每个片段显示我从服务器检索的数据的单独列表。按下PulseActivity的acti

  • 我有一个应用程序的屏幕小部件。单击此小部件时,会打开“DeveloperMode”设置。但在一些设备上,应用程序因以下消息而崩溃。 引起:android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 我曾尝试使用addFlags和setFlags添加这一行,但仍然存在相同

  • 每次使用这个PendingIntent时,我如何创建一个新的活动(及其片段)?

  • 问题内容: 这是在Playground中完成的,只是为了简化。 没有编译器警告。实际上,自动完成显示没有问题。我的理解是,在类{}的边界之外,我不应该看到私有的东西,也不可以。 我想念什么吗? 问题答案: Swift中的访问修饰符与其他语言的实现方式不同。分为三个级别: :仅在 该特定文件 内可访问 __ :仅在模块(项目)中可访问 :可从任何地方访问 除非另有标记,否则您编写的所有内容均为默认设