【问题标题】:Shared preference value not reflecting in app [duplicate]共享偏好值未反映在应用程序中[重复]
【发布时间】:2016-10-17 16:56:31
【问题描述】:

我在共享首选项中获取保存的值,但无法根据共享首选项中的值更新 TextView 或 ImageView。

这是我的共享首选项类代码:

public class SharedPref {

public SharedPref(Context context){
}

public void saveString(Context context,String key, String value) {
    SharedPreferences sharedPref = context.getSharedPreferences(key,Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString(key, value);
    editor.apply();
}

public String getString(Context context,String key){
    SharedPreferences sharedPref = context.getSharedPreferences(key, Context.MODE_PRIVATE);
    String value = sharedPref.getString(key, "");

    return value;
}
}

这是保存和检索偏好值的代码:

@Override
public void onNumberOfOversClick(String _overs) {

    final SharedPref sharedPref = new SharedPref(MainActivity.this);

    String local = sharedPref.getString(MainActivity.this,"overs");

    // custom dialog
    final Dialog dialog = new Dialog(MainActivity.this);
    dialog.setContentView(R.layout.custom_overs_dialog);
    dialog.setTitle("Choose Overs...");

    TextView text_3 = (TextView) dialog.findViewById(R.id.text_3);
    TextView text_5 = (TextView) dialog.findViewById(R.id.text_5);

    final ImageView icon_tick_3 = (ImageView) dialog.findViewById(R.id.icon_tick_3);
    final ImageView icon_tick_5 = (ImageView) dialog.findViewById(R.id.icon_tick_5);

    if(local == "3" || local == "")
    {
        icon_tick_3.setImageResource(R.drawable.tick);
    }
    else if(local == "5")
    {
        icon_tick_5.setImageResource(R.drawable.tick);
    }
    dialog.show();

    text_3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            icon_tick_3.setVisibility(View.VISIBLE);
            icon_tick_3.setImageResource(R.drawable.tick);
            icon_tick_5.setVisibility(View.INVISIBLE);
            sharedPref.saveString(MainActivity.this, "overs", "3");
        }
    });

    text_5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            icon_tick_3.setVisibility(View.INVISIBLE);
            icon_tick_5.setVisibility(View.VISIBLE);
            icon_tick_5.setImageResource(R.drawable.tick);
            sharedPref.saveString(MainActivity.this, "overs", "5");
        }
    });
}

如您所见,我可以在本地字符串变量中检索值,但是当我重新打开应用程序时,ImageView 未更新为 R.drawable.tick。

【问题讨论】:

  • @Selvin 是的,我是编程新手。无论如何感谢您的帮助。

标签: java android string-comparison android-dialog android-sharedpreferences


【解决方案1】:

字符串比较你现在的工作方式。你需要把equals语句改成这个

 if(local.equals("3") || local.equals(""))
{
    icon_tick_3.setImageResource(R.drawable.tick);
}

【讨论】:

    【解决方案2】:

    对于字符串比较,您必须使用equals() 方法而不是==

    所以将您的代码更新为:

    if (local.equals("3") || TextUtils.isEmpty(local)) { ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-24
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多