EditTextPreference的自定义布局,在自定义对话框中使用null验证

时间:2012-06-01 09:34:56

标签: android view preferenceactivity edittextpreference

我的应用程序中有PreferenceActivity,我想为EditTextPreference指定自定义布局。 我在具有android:layout属性的xml文件中执行此操作。一切都好,布局正在改变,但我无法更改其字段的任何值。代码运行没有错误,在调试中我可以看到值已更改,但在视觉上没有更改。 我试图打电话给view.invalidate()onContentChanged(),但没有改变。 所有ID都可以,并且不会抛出任何异常。所以我不知道。我很感激你的帮助。

以下是我的preferences_file_types.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory
        android:key="@string/preference_category_file_types"
        android:title="@string/settings_supported_file_types" >
        <EditTextPreference
            android:key="@string/preference_file_type_image"
            android:layout="@layout/file_types_list_item"
            android:title="@string/settings_supported_file_types_hint" />
    </PreferenceCategory>
</PreferenceScreen>

以下是我的PreferenceActivity类的代码:

public class FileTypesSettingsActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences_file_types);
        LayoutInflater inflater = getLayoutInflater();
        EditTextPreference imageTypePreference = (EditTextPreference) findPreference(getString(R.string.preference_file_type_image));
        View specifiedView = inflater.inflate(imageTypePreference.getLayoutResource(), null);
        changeViewAttributes(specifiedView);    
    }

    private void changeViewAttributes(View view) {
        ImageView fileTypeIcon = (ImageView) view.findViewById(R.id.file_types_list_item_iv_icon);
        fileTypeIcon.setBackgroundResource(R.drawable.ic_file_image);

        TextView fileTypePredefined = (TextView) view.findViewById(R.id.file_types_list_item_tv_predefined_extensions);
        fileTypePredefined.setText("JPG BMP GIF PNG");

        TextView fileTypeAdded = (TextView) view.findViewById(R.id.file_types_list_item_tv_added_extensions);
        fileTypeAdded.setText("BLA BLA BLA");
    }
}

0 个答案:

没有答案