Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 共享首选项无法正确保存数据_Android_Android Intent - Fatal编程技术网

Android 共享首选项无法正确保存数据

Android 共享首选项无法正确保存数据,android,android-intent,Android,Android Intent,你好,我的应用程序中有3个活动,我有意在它们之间传输数据。我遇到的问题是,当我从3活动返回到主活动时,我对主活动的共享首选项会发生变化。我怀疑问题在于我的意图是重新启动,但我不确定。我试图让数据保持与我转到3活动时的数据相同。我的应用程序从活动1开始,然后转到主活动,最后,如果单击按钮,则转到第三个活动获取一些数据并返回到主活动我遇到的问题是,我从第一个活动获取的数据在我从第三个活动返回时重新启动。当我在活动之间移动数据时,我使用intent 传输意图活动1的我的代码: Bund

你好,我的应用程序中有3个活动,我有意在它们之间传输数据。我遇到的问题是,当我从3活动返回到主活动时,我对主活动的共享首选项会发生变化。我怀疑问题在于我的意图是重新启动,但我不确定。我试图让数据保持与我转到3活动时的数据相同。我的应用程序从活动1开始,然后转到主活动,最后,如果单击按钮,则转到第三个活动获取一些数据并返回到主活动我遇到的问题是,我从第一个活动获取的数据在我从第三个活动返回时重新启动。当我在活动之间移动数据时,我使用intent

传输意图活动1的我的代码:

        Bundle CIW = new Bundle();
    CIW.putInt("one", int1);
    CIW.putInt("two", int2);
    CIW.putDouble("double", double);
    Intent a = new Intent(Must.this, Main.class);
    a.putExtras(CIW);
    startActivity(a);
在我的主要活动中获取捆绑包的代码(在我的创建方法中):

我的共享首选项代码(暂停时):

我的共享首选项代码(在简历上):

传输意图活动3的我的代码:

Bundle number = new Bundle();
    number.putInt("three", int3);
    Intent a = new Intent(Card.this, Main.class);
    a.putExtras(number);

您的共享首选项文件(名称)始终相同,对吗

如果您正在使用来自不同活动/服务/意图/的共享首选项。。。您应该将其与模式模式多进程(常量值int=4)一起使用。否则,文件将被锁定,并且一次只能有一个进程写入它

因此,当您在多进程应用程序中调用共享首选项时,请执行以下操作:

SharedPreferences preferences = this.getSharedPreferences("myapp",4);
在android 2.3之前,所有版本上都会启用MODE_MULTI_进程,但必须严格调用后者!官方文件说:

操作模式。默认操作使用0或MODE_PRIVATE,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE控制权限。如果多个进程对同一个SharedReferences文件进行变异,也可以使用位模式多进程。针对姜饼(Android 2.3)及以下版本的应用程序中,MODE_MULTI_进程始终处于打开状态,而在更高版本中,默认情况下处于关闭状态


首先,请不要用大写字母开始变量名。这会使您的代码难以阅读。至于你的问题,很难理解你的问题是什么。请编辑您的问题,包括预期结果和您实际得到的结果。你说的“重新启动”或“更改”或“重新启动”是什么意思?你忘记提交了吗?不,我只是在最后才提交
    SharedPreferences settings = PreferenceManager
            .getDefaultSharedPreferences(getApplicationContext());
    int1 = settings.getInt("one", int1); //the rest of the variable 
Bundle number = new Bundle();
    number.putInt("three", int3);
    Intent a = new Intent(Card.this, Main.class);
    a.putExtras(number);
SharedPreferences preferences = this.getSharedPreferences("myapp",4);