1

嘿,我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);
    }
}

}

4

1 回答 1

7

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

SharedPreferences sharedPrefs = PreferenceManager
             .getDefaultSharedPreferences(getActivity());
于 2013-09-08T01:32:01.920 回答