gpt4 book ai didi

android - 如何获取在对话框中动态加载(setView)的布局的元素(findViewById)?

转载 作者:可可西里 更新时间:2023-11-01 18:56:12 26 4
gpt4 key购买 nike

我需要获取在 xml 布局中定义的 EditText,它作为首选项对话框中的 View 动态加载,即:

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
}

}

编辑:解决方案 by 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);



}

最佳答案

由于您正在扩展 EditTextPreference,您可以只使用 getEditText() 方法来获取默认 TextView 。但是,由于您要设置自己的布局,这可能不会满足您的要求。

在您的情况下,您应该将 XML 布局扩展到 View 对象中,然后在 View 中找到 editText - 然后您可以将 View 传递给构建器。没试过这个,但只要看看你的代码,我认为这是可能的。

像这样:

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);

关于android - 如何获取在对话框中动态加载(setView)的布局的元素(findViewById)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com