gpt4 book ai didi

java - Android 上下文和共享首选项

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

我正在尝试获取上下文来运行异步共享首选项。试图获取上下文:

public class MainActivity2 extends Activity implements OnClickListener {
public MainActivity2(final Context context) {
this.context = context;
}
private Context context;

//....rest of class.....
}

但是应用程序在包含它时崩溃了。但需要类似的东西来访问共享首选项:

class CreateUser extends AsyncTask<String, String, String> {
// .....rest of ....
@Override
protected String doInBackground(String... args) {
SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(context);
String myIntegerValue = prefs.getString("ok", "f");
android.util.Log.d("your_tag", "myint: " + myIntegerValue);
}
//rest of.....
}

尝试像这样获取共享首选项是行不通的:

SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(getactivity());

尝试像这样获取共享首选项是行不通的:

SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(this);

使用此方法时,getDefaultSharedPreferences 无法应用于 MainActivity2.CreateUser

最佳答案

在 asynctask 中使用共享首选项时,您应该在 onPreExecute 方法中将所有数据从共享首选项获取到本地变量,在 doInBackground 中使用它们,如果需要更新这些值,请在 onPostExecute 中执行。

如果您在同一个类中使用 asynctask,则无需在任何地方显式声明上下文。你可以只写Classname.this。

更好的实现方法是在 oncreate 中初始化您的共享首选项,因为您可以在任何地方使用它。

如果您在不同的类中编写 asynctask,那么您可以编写一个接受上下文并调用 asynctask 来执行的函数。

关于java - Android 上下文和共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29790930/

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