Android:如何使用单个实例从非 Activity 类启动 Activity

标签 android android-intent android-activity task flags

我有一个 Java 类(不是 Activity ),我想从它开始一个新 Activity 。我正在获取应用程序初始化时的上下文,然后我使用它来启动新 Activity ,如下所示。虽然,代码只有在我添加以下代码时才有效 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 这不是我想要的,因为我只想拥有每个 Activity 的单个实例。 我怎样才能做同样的事情,而不是创建一个新的 Activity 来获取已经创建的 Activity ? 我的代码是:

public class Foo {
  ...
  protected Foo(Context context) {
    applicationContext = context;
  }

  private void onButtonClick(){
    Intent intent = new Intent(applicationContext, Bar.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //doesnt work without that line
    applicationContext.startActivity(intent);
  }
}

最佳答案

在这种情况下,您需要使用 Activity 上下文来启动新的 Activity。你应该像下面这样修改你的类

public class Foo {
  ...
  protected Foo(Activity activityContext) {
    this.activityContext= activityContext;
  }

  private void onButtonClick(){
    Intent intent = new Intent(activityContext, Bar.class);
    activityContext.startActivity(intent);
  }
}

但是在这里你的代码并没有清除你在哪里使用这个类的想法。因为您将此方法设为私有(private)。

关于Android:如何使用单个实例从非 Activity 类启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096784/

相关文章:

android - Activity 中的旧 Intent 从通知开始

java - Android:将传感器数据从服务广播到 Activity

android - java.lang.IllegalArgumentException : No view found for id for fragment NewLogFragment 异常

Android:ListView的回收机制

java - Android Java - 当 flush() 到服务器时出现 IOException

android - 如何通过实现 parcable 通过 Intent 发送类对象。无法编码值错误

android - 使用自定义 Intent 启动 Activity ,抛出 ACTIVITY NOT FOUND EXCEPTION

android - 获取android应用所在的电话号码

android - 在android中,哪一层代码处理多个RIL,例如3G 与 4G

带有 Intent.ACTION_EDIT 的 Android 4 startActivityForResult 始终返回结果代码 RESULT_CANCELED