我正在创建自定义偏好<com.myproject.CustomPreference android:layout="@layout/preferences_main" />
,我想在其中显示用户名,电话号码和个人资料照片(在一个无关紧要的圈子中)。我设法通过CustomPreference.class扩展首选项从首选项中获取用户名和电话号码,但我没有获得配置文件pic的路径,因为此类未定义getExternalFilesDir
。
这是我的代码:
public class CustomPreference extends Preference {
private TextView tvusername, tvphonenumber;
private ImageView profilepic_profile;
public CustomPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.setWidgetLayoutResource(R.layout.preferences_main);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
tvusername = (TextView) view.findViewById(R.id.tvusername);
tvphonenumber = (TextView) view.findViewById(R.id.tvphonenumber);
profilepic_profile = (ImageView) view
.findViewById(R.id.profilepic_profile);
final SharedPreferences prefs = getSharedPreferences();
// entering preference username in text view
String username = prefs.getString("username", null);
tvusername.setText(username);
// entering preference phonenumber in text view
String phonenumber = prefs.getString("phonenumber", null);
tvphonenumber.setText(phonenumber);
// Show currently saved profile pic in imageview
String fname = "profile.png";
Bitmap photo2 = BitmapFactory.decodeFile(getExternalFilesDir(null)
.getAbsolutePath() + "/images/" + fname);
if (photo2 != null) {
GraphicsUtil graphicUtil2 = new GraphicsUtil();
profilepic_profile.setImageBitmap(graphicUtil2.getCircleBitmap(
photo2, 16));
} else {
// profilepic_profile.setBackground(profile_pic_big);
}
}
}
答案 0 :(得分:2)
getExternalFilesDir()
是Context
上的一种方法。您在Context
中传递CustomPreference
,并从getContext()
基类继承了Preference
方法。
答案 1 :(得分:1)
getExternalFilesDir
是Context
类的方法。
在类Context
和构造函数中创建全局mContext
public CustomPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
mContext = context
this.setWidgetLayoutResource(R.layout.preferences_main);
}
然后您可以使用mContext
来致电getExternalFilesDir
mContext.getExternalFilesDir()
OR
你可以打电话
getContext().getExternalFilesDir()