Android 共享首选项错误,执行 AsyncTask 时?
Android shared preference error, while executing AsyncTask?
我成功地存储和检索了值,但是当我使用这样的条件时
String checkpassword = "";
GlobalData GD = new GlobalData(getApplicationContext());
checkpassword = this.getpassword(GD);
if (checkpassword.equalsequalsIgnoreCase("") || checkpassword == null
|| checkpassword.equalsIgnoreCase("null")){
ShowCustomPopup();
}
弹出窗口出现,即使我在共享首选项中有字符串,但并非在所有 android 设备中,但在 4.4.4 设备中,这种情况经常发生是否有任何解决方案完整的方法如下谢谢
注意:调试应用程序时它可以正常工作没有问题。
这是我存储值的方法
public void setpassword(GlobalData GD){
String password = "password";
GD.SetPassword(password);
GD.CommitUpdate;
}
这是我获取价值的方法
public String getpassword(GlobalData GD){
return GD.GetPassword();
}
这是我的 class 来存储值并提交
public class GlobalData {
SharedPreferences prefs = null;
SharedPreferences SetPrefsObj = null;
Editor editor;
public GlobalData(Context ctx)
{
prefs = Prefs.get(ctx);
SetPrefsObj = SetPrefs.get(ctx);
editor = SetPrefsObj.edit();
}
public String GetPassword()
{
return this.prefs.getString("password","");
}
public void SetPassword(String Str_Value){
editor.putString("password",Str_Value);
}
public void CommitUpdate(){
editor.commit();
}
GetTask 是我的 AsyncTask,它是在执行 AsyncTask 时执行的,以使用密码弹出检查从共享首选项中获取值(我也在检查来自同一首选项集的密码),我不确定这一点,但它可能是访问相同首选项的问题可能会在 android
中出现此类问题
之前我在执行 AsyncTask 的同时进行密码检查,现在我在执行任务之前检查它。
String checkpassword = "";
GlobalData GD = new GlobalData(getApplicationContext());
checkpassword = this.getpassword(GD);
if (checkpassword.equalsequalsIgnoreCase("") || checkpassword == null
|| checkpassword.equalsIgnoreCase("null")){
ShowCustomPopup();
}
new GetTask(this, this, null).execute();
class GetTask extends AsyncTask<Object, Void, String>
{
Context context;
Activity actvity;
GetTask(Context context, Activity act, String userid) {
this.context = context;
actvity = act;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
imgSpinner.setVisibility(View.VISIBLE);
imgSpinner.startAnimation(animRotate);
}
@Override
protected String doInBackground(Object... params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_text1.setText(GD.GetLastID);
tv_text2.setText(PD.GetLatestID);
}
});
return "";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
imgSpinner.setVisibility(View.GONE);
imgSpinner.clearAnimation();
}
}
我不确定,但在 AsyncTask 修复问题之前检查密码弹出窗口..
注意:我也在读取 AsyncTask 中的另一个偏好数据
if (checkpassword == null && ("".equalsequalsIgnoreCase(checkpassword)
|| "null".equalsIgnoreCase(checkpassword))){
ShowCustomPopup();
}
使用上面的语句它适用于所有 devices.Your 检查 checkpassword == null
作为第二个语句,它不好,因为对象检查总是应该首先进行,然后你只需要做另一件事。
我成功地存储和检索了值,但是当我使用这样的条件时
String checkpassword = "";
GlobalData GD = new GlobalData(getApplicationContext());
checkpassword = this.getpassword(GD);
if (checkpassword.equalsequalsIgnoreCase("") || checkpassword == null
|| checkpassword.equalsIgnoreCase("null")){
ShowCustomPopup();
}
弹出窗口出现,即使我在共享首选项中有字符串,但并非在所有 android 设备中,但在 4.4.4 设备中,这种情况经常发生是否有任何解决方案完整的方法如下谢谢 注意:调试应用程序时它可以正常工作没有问题。
这是我存储值的方法
public void setpassword(GlobalData GD){
String password = "password";
GD.SetPassword(password);
GD.CommitUpdate;
}
这是我获取价值的方法
public String getpassword(GlobalData GD){
return GD.GetPassword();
}
这是我的 class 来存储值并提交
public class GlobalData {
SharedPreferences prefs = null;
SharedPreferences SetPrefsObj = null;
Editor editor;
public GlobalData(Context ctx)
{
prefs = Prefs.get(ctx);
SetPrefsObj = SetPrefs.get(ctx);
editor = SetPrefsObj.edit();
}
public String GetPassword()
{
return this.prefs.getString("password","");
}
public void SetPassword(String Str_Value){
editor.putString("password",Str_Value);
}
public void CommitUpdate(){
editor.commit();
}
GetTask 是我的 AsyncTask,它是在执行 AsyncTask 时执行的,以使用密码弹出检查从共享首选项中获取值(我也在检查来自同一首选项集的密码),我不确定这一点,但它可能是访问相同首选项的问题可能会在 android
中出现此类问题之前我在执行 AsyncTask 的同时进行密码检查,现在我在执行任务之前检查它。
String checkpassword = "";
GlobalData GD = new GlobalData(getApplicationContext());
checkpassword = this.getpassword(GD);
if (checkpassword.equalsequalsIgnoreCase("") || checkpassword == null
|| checkpassword.equalsIgnoreCase("null")){
ShowCustomPopup();
}
new GetTask(this, this, null).execute();
class GetTask extends AsyncTask<Object, Void, String>
{
Context context;
Activity actvity;
GetTask(Context context, Activity act, String userid) {
this.context = context;
actvity = act;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
imgSpinner.setVisibility(View.VISIBLE);
imgSpinner.startAnimation(animRotate);
}
@Override
protected String doInBackground(Object... params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_text1.setText(GD.GetLastID);
tv_text2.setText(PD.GetLatestID);
}
});
return "";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
imgSpinner.setVisibility(View.GONE);
imgSpinner.clearAnimation();
}
}
我不确定,但在 AsyncTask 修复问题之前检查密码弹出窗口..
注意:我也在读取 AsyncTask 中的另一个偏好数据
if (checkpassword == null && ("".equalsequalsIgnoreCase(checkpassword)
|| "null".equalsIgnoreCase(checkpassword))){
ShowCustomPopup();
}
使用上面的语句它适用于所有 devices.Your 检查 checkpassword == null
作为第二个语句,它不好,因为对象检查总是应该首先进行,然后你只需要做另一件事。