android – 在片段中实现对话框时添加内容之前必须请求窗口功能

android – 在片段中实现对话框时添加内容之前必须请求窗口功能,第1张

概述我有一个片段,我需要在其中显示自定义对话框. 请查看下面的代码. public class MyFragment extends Fragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override 我有一个片段,我需要在其中显示自定义对话框.

请查看下面的代码.

public class MyFragment extends Fragment{  @OverrIDe  public voID onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);  }  @OverrIDe  public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {    VIEw rootVIEw = inflater.inflate(R.layout.send_layout,container,false);    TextVIEw txtVIEw = (TextVIEw) rootVIEw.findVIEwByID(R.ID.tv);    txtVIEw.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            openDialog();        }    });   return rootVIEw;  }  public voID openDialog(){      AppCompatDialog dialog = new AppCompatDialog(getContext(),R.style.package_types__dialog);      dialog.setContentVIEw(R.layout.package_types_dialog);      dialog.show();  }}

删除行时:

dialog.setContentVIEw(R.layout.package_types_dialog);

没有错误,但如果我使用相同的以下错误抛出:

FATAL EXCEPTION: main10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime: Process: in.edelworks.pickedup,PID: 2386610-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime: androID.util.AndroIDRuntimeException: Window feature must be requested before adding content10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.support.v7.app.AppCompatDelegateImplV7.throwFeatureRequestIfSubDecorInstalled(AppCompatDelegateImplV7.java:1584)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.support.v7.app.AppCompatDelegateImplV7.requestwindowFeature(AppCompatDelegateImplV7.java:509)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:117)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:148)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.support.v7.app.AppCompatDialog.onCreate(AppCompatDialog.java:60)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.app.Dialog.dispatchOnCreate(Dialog.java:361)10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroIDRuntime:     at androID.app.Dialog.show(Dialog.java:262)
解决方法 我已经为你的情况实施并尝试了很多替代方案,它的工作非常好,所以我没有机会审查你的错误.但我可以建议你用AlertDialog.Builder替换AppCompatDialog,这是一个androID.support.v7.app类.

替换此代码

public voID openDialog(){      AppCompatDialog dialog = new AppCompatDialog(getContext(),R.style.package_types__dialog);      dialog.setContentVIEw(R.layout.package_types_dialog);      dialog.show();  }

public voID openDialog(){            AlertDialog.Builder dialog = new AlertDialog.Builder(getContext(),R.style.package_types__dialog);               dialog.setVIEw(R.layout.package_types_dialog);       }

注意 :

如果您有任何处理对话事件的类,则扩展androID.support.v4.app.DialogFragment的DialogFragment.并且不要忘记覆盖onCreateDialog方法.完整的课程看起来像这样

import androID.os.Bundle;import androID.support.v4.app.DialogFragment;/** * Created by Shreekrishna on 2/29/2016. */public class PackageTypesDialog extends DialogFragment {     @OverrIDe    public Dialog onCreateDialog(Bundle savedInstanceState) {        return super.onCreateDialog(savedInstanceState);    }}

这可能会解决您的问题!

总结

以上是内存溢出为你收集整理的android – 在片段中实现对话框时添加内容之前必须请求窗口功能全部内容,希望文章能够帮你解决android – 在片段中实现对话框时添加内容之前必须请求窗口功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1138277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存