我想将一个值从活动 A 传递给活动 B,而无需实际启动活动 B(因此这排除了使用 Intents 和 putExtra)。活动 B 可能会或可能不会启动,但当它启动时,它需要显示活动 A 传递给它的值。
我搜索了高低,但找不到这个看似简单的问题的任何相关解决方案。任何帮助将不胜感激!
我想将一个值从活动 A 传递给活动 B,而无需实际启动活动 B(因此这排除了使用 Intents 和 putExtra)。活动 B 可能会或可能不会启动,但当它启动时,它需要显示活动 A 传递给它的值。
我搜索了高低,但找不到这个看似简单的问题的任何相关解决方案。任何帮助将不胜感激!
你找不到解决方案,因为它违背了任何逻辑。如果活动 B 未启动且可见,则无法执行任何操作。Activity B 甚至可能已经在您不知情的情况下被系统销毁。
您可以使用很多东西来设置一些变量,您的 Activity B 可以读取这些变量,例如在您的应用程序中、在您的 XML 中的某个位置或任何随机类中。
尽管如此,在您启动Activity B 之前,您实际上无法对这些选项中的任何一个执行任何操作,并且当您可以时,它实际上与在 Intent 中提供额外数据相同。
您可以使用共享首选项。使用这个 Activity 可以将 Value 设置到其中,其他 Activity 可以从中读取。
所以你需要为一个活动保留一个值。如果它启动,则意味着您必须使用这些值,否则您将丢弃这些值。为此,您可以使用具有所需数据类型变量的单独类,并且可以为此创建 getter setter 并使用它。
利用类
public class GetSet {
public GetSet() {
super();
}
private static boolean passwordSet = false;
public static boolean isPasswordSet() {
return passwordSet;
}
public static void setPasswordSet(boolean passwordSet) {
GetSet.passwordSet = passwordSet;
}
}
您可以使用GetSet.setPasswordSet(false);
和Boolean flag = GetSet.isPasswordSet();
将值设置为全局:
公共类全球{
public static int mValue;
public static int getValue() {
return mValue;
}
public static void setValue(int mValue) {
Global.mValue = mValue;
}
}
使用全局类,如:
public class AppConfig {
Context context;
public AppConfig(Context mxt) {
context = mxt;
}
public static String filepath = null;
然后,在活动 A之前onCreate()
:
AppConfig config;
Context context;
并在onCreate()
方法中输入:
context = getApplicationContext();
config = new AppConfig(context);
并且,在第二个活动 B之前onCreate()
:
AppConfig config;
Context context;
而且,在onCreate()
方法中放这个:
context = getApplicationContext();
config = new AppConfig(context);
并将值设置在您想要的位置。希望这会帮助你。
我一直在寻找答案,但我找不到。所以我找到了一种方法来做到这一点。
第一个活动
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("Flag" , true);
startActivity(intent);
第二次活动
boolean flag;
flag = getIntent().getBooleanExtra("Flag" ,false);
if(flag == true)
{
this.finish();
}
所以现在你可以发送任何你想要的数据,它会打开第二个活动,然后在你甚至没有意识到它之后立即关闭它。您可以使用共享偏好来保存您的数据以备后用。