Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
Java 使用共享首选项存储未提交的数据_Java_Android - Fatal编程技术网

Java 使用共享首选项存储未提交的数据

Java 使用共享首选项存储未提交的数据,java,android,Java,Android,我需要使用共享首选项存储尚未保存的数据。举个简单的例子,在我的应用程序中,我希望如果用户填写了注册表单并关闭了应用程序,那么当他重新进入应用程序时,他的信息仍然会被填写。您能推荐一些教程吗?您可以使用onSaveInstanceState将这些数据保存在捆绑包中 e、 g 如何为您的活动创建一个新的应用程序,例如您的注册活动。 此ViewModel将是您的SharedReferences的处理程序,用于跟踪您的数据,例如用户名和密码文本字段的值。 现在,您可以重写方法onCleared(),并在

我需要使用
共享首选项
存储尚未保存的数据。举个简单的例子,在我的应用程序中,我希望如果用户填写了
注册
表单并关闭了应用程序,那么当他重新进入应用程序时,他的信息仍然会被填写。您能推荐一些教程吗?

您可以使用onSaveInstanceState将这些数据保存在捆绑包中 e、 g

如何为您的活动创建一个新的应用程序,例如您的注册活动。 此
ViewModel
将是您的
SharedReferences
的处理程序,用于跟踪您的数据,例如用户名和密码文本字段的值。 现在,您可以重写方法
onCleared()
,并在那里添加写入
SharedReferences
的实现

在您的活动中,您需要:

  • 使用
    TextWatcher
    收听您的文本字段,可能会覆盖
    void-afterextchanged(可编辑的s)
    (因为用户可能刚刚关闭应用程序),并在内部使用当前值更新您的
    ViewModel

  • ViewModel
    加载数据,以便在
    OnCreate()
    中初始化UI,以防在
    SharedReferences
    中保存任何数据

onCleared()

  • 当不再使用此ViewModel并将其销毁时,将调用此方法

您可以使用缓存的数据库或以xml/json格式将用户数据保存到应用程序数据中。感谢回复,但我只想存储尚未提交的信息感谢回复,这是一个很好的选择,但我的问题是如何使用共享首选项来实现该场景。以这种方式从应用程序类共享您的SharedReferences实例,即使在活动重新启动后,它也不会丢失这些实例。
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    textView.setText(savedInstanceState.getString(TEXT_VIEW_KEY));
}

// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(GAME_STATE_KEY, gameState);
    outState.putString(TEXT_VIEW_KEY, textView.getText());

    // call superclass to save any view hierarchy
    super.onSaveInstanceState(outState);
}