我想将活动A中的值传递给活动B而不实际启动活动B(因此这排除了使用Intents和putExtra)。活动B可能会或可能不会启动,但是当它发生时,它需要显示活动A传递给它的值。
我搜索了高低,但找不到任何相关的解决方案来解决这个看似简单的问题。任何帮助将不胜感激!
答案 0 :(得分:6)
你无法找到解决方案,因为它违背任何逻辑。 如果未启动且可见,活动B将无法执行任何操作。在您不知情的情况下,活动B甚至可能已被系统销毁。
你可以使用很多东西设置一些变量,你的Activity B可以读取它们,例如你的应用程序,XML中的某个地方或者任何随机类。
但是,在开始活动B之前,你实际上不能做任何事情,直到你可以,它实际上与给予它有效意图中的额外数据。
答案 1 :(得分:0)
您可以使用shared Preferences。使用这一个Activity可以将Value设置为其中,其他活动可以从中读取。
答案 2 :(得分:0)
因此您需要为活动保留一个值。如果它启动它意味着您必须使用这些值,否则您将丢弃这些值。为此,您可以使用具有所需数据类型变量的单独类,并且可以为此创建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();
答案 3 :(得分:0)
将值设置为Global:
public class Global {
public static int mValue;
public static int getValue() {
return mValue;
}
public static void setValue(int mValue) {
Global.mValue = mValue;
}
}
答案 4 :(得分:0)
使用全局课程,例如:
public class AppConfig {
Context context;
public AppConfig(Context mxt) {
context = mxt;
}
public static String filepath = null;
然后,在onCreate()
之前的活动A :
AppConfig config;
Context context;
并在onCreate()
方法中提出:
context = getApplicationContext();
config = new AppConfig(context);
并且,在onCreate()
之前的第二个活动B :
AppConfig config;
Context context;
而且,在onCreate()
方法中放了这个:
context = getApplicationContext();
config = new AppConfig(context);
并将值设置为您想要的值。希望这会对你有所帮助。
答案 5 :(得分:0)
我一直在寻找答案,但找不到。所以我找到了一种方法。
第一次活动
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();
}
因此,现在您可以发送所需的任何数据,它将打开“第二个活动”,然后在您甚至没有意识到的情况下立即将其关闭。您可以使用共享权限来保存数据,以备后用。