对话框中的 setContentView() 不显示
Posted
技术标签:
【中文标题】对话框中的 setContentView() 不显示【英文标题】:setContentView() in Dialog not displaying 【发布时间】:2021-07-22 16:23:25 【问题描述】:我在我的应用中使用自定义对话框:
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState ?: Bundle())
val view = LayoutInflater.from(context).inflate(R.layout.dialog_list, null)
setContentView(R.layout.dialog_list)
setCanceledOnTouchOutside(true)
setCancelable(true)
setUpRecyclerView(view)
我在 setContentView()
函数中传递布局名称。
但是当我点击对话框时,它什么也没有显示。
但是,如果我在 setContentView
中传递 view
对象,它会显示所有内容。
为什么我输入setContentView(R.layout.dialog_list)
时没有显示
【问题讨论】:
这段代码在哪里?在DialogFragment
内?难道你不应该覆盖onCreateView
并在那里扩充布局吗?
【参考方案1】:
让我们从头开始。显示自定义对话框的最佳方法我认为它是扩展 DialogFragment 然后在onCreateView
中扩展您的布局(就像您创建片段时一样)。
所以你的 coe 应该是这样的:
public class MyDialog extends DialogFragment
Button myButton;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
View mView = inflater.inflate(R.layout.your_dialog_layout, container,false);
//here o initialize your variables
myButton = mView.findViewById(R.id.my_button_id)
return mView;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
//here u can set listeners or do some things like text changes etc
myButton.setOnClickListener(v -> dismiss());
@Override
public void onStart()
super.onStart();
//and here u can change dialog layouts position anda else
Dialog dialog = getDialog();
if(dialog != null)
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
之后,您只需创建对话框实例并显示它
MyDialog dialog = new MyDialog();
dialog.show
【讨论】:
代码很好,但我的问题是我为什么要一直膨胀布局?为什么我不能传递布局资源 ID?setContentView()
也接受布局资源 id
您需要在 android 团队中找到编写原始片段的人。我们无法真正回答有关开发人员为何做出特定选择的问题。以上是关于对话框中的 setContentView() 不显示的主要内容,如果未能解决你的问题,请参考以下文章
数组适配器中的 get count() 如何在不显式返回数组大小的情况下返回值?
`DataBindingUtil` 中的 `bind`、`inflate` 和 `setContentView` 有啥区别
Android - setContentView 中的 loadDrawableForCookie Resources$NotFoundException