【问题标题】:loading preferenceactivity value errors in fragment在片段中加载偏好活动值错误
【发布时间】:2013-09-11 20:04:03
【问题描述】:

嘿,我在以下代码中遇到错误:getDefaultSharedPreferences。我该如何解决这个问题?我正在尝试从我的 PreferenceActivity 加载 prefUsername 的 edittext 值。我尝试使用getSharedPreferences,但它返回null,因为PreferenceActivity 将其数据存储在DefaultSharedPreferences 中。任何帮助都会得到帮助。

错误是: The method getDefaultSharedPreferences(Context) in the type PreferenceManager is not applicable for the arguments (RunawayFragment)

全班:

public class RunawayFragment extends DialogFragment {

public static RunawayFragment newInstance() {
    RunawayFragment f = new RunawayFragment();
    return f;
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    if (getDialog() != null) {
        getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent);
    }

    View root = inflater.inflate(R.layout.runaway_fragment, container, false);
    return root;
}

@SuppressLint("NewApi")
@Override
public void onStart() {
    super.onStart();

    // User Picture
    final SharedPreferences sharedPreference = this.getActivity().getSharedPreferences("pref_key", Context.MODE_PRIVATE);
    String picturePath = sharedPreference.getString("img_path", null);
    ImageView imageView = (ImageView) getView().findViewById(R.id.imageView1);
    imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    //User Name
    SharedPreferences sharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(RunawayFragment.this);
    String getUsernameText = sharedPreference.getString("prefUsername", null);
    TextView setUsername = (TextView) getView().findViewById(R.id.username); 
    setUsername.setText(getUsernameText);

    // change dialog width
    if (getDialog() != null) {

        int fullWidth = getDialog().getWindow().getAttributes().width;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
            Display display = getActivity().getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            fullWidth = size.x;
        } else {
            Display display = getActivity().getWindowManager().getDefaultDisplay();
            fullWidth = display.getWidth();
        }

        final int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()
                .getDisplayMetrics());

        int w = fullWidth - padding;
        int h = getDialog().getWindow().getAttributes().height;

        getDialog().getWindow().setLayout(w, h);
    }
}

}

【问题讨论】:

    标签: android android-fragments sharedpreferences android-preferences


    【解决方案1】:

    您需要将上下文传递给getDefaultSharedPreferences(),您可以通过调用getActivity() 获得。

    SharedPreferences sharedPrefs = PreferenceManager
                 .getDefaultSharedPreferences(getActivity());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多