gpt4 book ai didi

java - 从android中的SharedPreferences获取属性

转载 作者:行者123 更新时间:2023-12-01 12:06:01 25 4
gpt4 key购买 nike

这是我的 MainActivity.java,我在其中实例化静态 SharedPreferences 及其编辑器:

public static SharedPreferences settings;
public static SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

settings = PreferenceManager.getDefaultSharedPreferences(this);
editor = settings.edit();

然后,我对另一个 java 类进行 AsyncTask 调用,在其中尝试将 onPostExecute 方法中的 token 存储到此 SharedPreferences。

@Override
protected void onPostExecute(String result) {

MainActivity.editor.putString("auth_token", result);
MainActivity.editor.commit();

Log.d("token", MainActivity.settings.getString("auth_token", "Nothing"));

}

此 Log.d() 方法在控制台中输出标记值,即“OK”。但随后我启动​​了一项 Activity Next.java,尝试使用以下命令在屏幕上获取此 token :

TextView text;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);

String auth_token_string = MainActivity.settings.getString("auth_token", "Nothing");

text = (TextView) findViewById(R.id.logintxt);
text.setText(auth_token_string);

屏幕上的结果是默认的字符串“Nothing”。

我在这里做错了什么? ...这是使用 SharedPreferences 的正确方法吗?我在这个topic中得到了这个想法.

编辑:

来自 AuthorizeActivity.java 的代码,我在其中调用 asyncTask:

 public void getToken(String code){

AsyncTask<String, Void, String> tsk = new Api().execute(code);

Intent i = new Intent(this.getBaseContext(), Next.class);
dialog.dismiss();

startActivity(i);

}

最佳答案

您的设置变量是静态的,当您访问 Next.java 中的设置时,它在 MainActivity 的 onCreate 方法中初始化,但尚未初始化。

您可以访问 Next.java 中的 SharedPreferences(它是共享的)。

编辑:

在MainActivity中添加更新方法:

public void update() {

Intent i = new Intent(this.getBaseContext(), Next.class);

startActivity(i);
}

你的 postExecute 应该是这样的:

 @Override
protected void onPostExecute(String result) {

MainActivity.editor.putString("auth_token", result);
MainActivity.editor.commit();

Log.d("token", MainActivity.settings.getString("auth_token", "Nothing"));
((MainActivity) context).update();

}

关于java - 从android中的SharedPreferences获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com