getExternalFilesDir在自定义首选项中未定义

时间:2014-08-28 14:05:48

标签: android android-preferences bitmapfactory

我正在创建自定义偏好<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);
    }
}

}

2 个答案:

答案 0 :(得分:2)

getExternalFilesDir()Context上的一种方法。您在Context中传递CustomPreference,并从getContext()基类继承了Preference方法。

答案 1 :(得分:1)

getExternalFilesDirContext类的方法。

在类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()