Android:如何使用单个实例从非 activity class 启动 activity
Android: How to start an activity from a non-activity class using a single instance
我有一个 Java class(不是 activity),我想从中开始一个新的 activity。我正在获取应用程序初始化时的上下文,然后我用它来启动一个新的 activity,如下所示。虽然,代码只有在我添加以下代码时才有效 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这不是我想要的,因为我只想拥有每个 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);
}
}
Intent.FLAG_ACTIVITY_SINGLE_TOP
使用这个,它可以帮助
在这种情况下,您需要使用 Activity 上下文来启动新的 Activity。你应该像下面这样修改你 class
public class Foo {
...
protected Foo(Activity activityContext) {
this.activityContext= activityContext;
}
private void onButtonClick(){
Intent intent = new Intent(activityContext, Bar.class);
activityContext.startActivity(intent);
}
}
但是你这里的代码并没有清除思路,你在哪里使用这个class。因为您将此方法设为私有。
我有一个 Java class(不是 activity),我想从中开始一个新的 activity。我正在获取应用程序初始化时的上下文,然后我用它来启动一个新的 activity,如下所示。虽然,代码只有在我添加以下代码时才有效 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这不是我想要的,因为我只想拥有每个 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);
}
}
Intent.FLAG_ACTIVITY_SINGLE_TOP
使用这个,它可以帮助
在这种情况下,您需要使用 Activity 上下文来启动新的 Activity。你应该像下面这样修改你 class
public class Foo {
...
protected Foo(Activity activityContext) {
this.activityContext= activityContext;
}
private void onButtonClick(){
Intent intent = new Intent(activityContext, Bar.class);
activityContext.startActivity(intent);
}
}
但是你这里的代码并没有清除思路,你在哪里使用这个class。因为您将此方法设为私有。