Vik*_*ngh 14 android preferenceactivity android-layout android-edittext
我需要获取在xml布局中定义的EditText,该布局在首选项对话框中作为视图动态加载,即:
public class ReportBugPreference extends EditTextPreference {
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
builder.setView(LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug_layout,null));
EditText edttxtBugDesc = (EditText) findViewById(R.id.bug_description_edittext); // NOT WORKING
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:解决方案由jjnFord
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
View viewBugReport = LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug,null);
EditText edttxtBugDesc = (EditText) viewBugReport.findViewById(R.id.bug_description_edittext);
builder.setView(viewBugReport);
}
Run Code Online (Sandbox Code Playgroud)
jjN*_*ord 19
由于您正在扩展EditTextPreference,因此您只需使用getEditText()方法来获取默认文本视图.但是,由于您正在设置自己的布局,这可能无法满足您的需求.
在您的情况下,您应该将XML布局膨胀为View对象,然后在视图中找到editText - 然后您可以将视图传递给构建器.没试过这个,但只是查看你的代码,我认为这是可能的.
像这样的东西:
View view = (View) LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug_layout, null);
EditText editText = view.findViewById(R.id.bug_description_edittext);
builder.setView(view);
Run Code Online (Sandbox Code Playgroud)
需要LayoutInflater才能在运行时基于XML文件创建(或填充)View.例如,如果您需要为ListView项动态生成视图. Android应用程序中的布局inflater是什么?
LayoutInflater inflater = getActivity().getLayoutInflater();
View view= inflater.inflate(R.layout.your_xml_file, null);
TextView textView =
(TextView)view.findViewById(R.id.text_view_id_in_your_xml_file);
textView.setText("Hello!");
| 归档时间: |
|
| 查看次数: |
28195 次 |
| 最近记录: |