我在以下代码中的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);
}
}
}
答案 0 :(得分:7)
您需要将上下文传递给getDefaultSharedPreferences()
,您可以通过调用getActivity()
来获取该上下文。
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(getActivity());