【问题标题】:java.lang.IllegalStateException while creating alert dialog in android [duplicate]在android中创建警报对话框时出现java.lang.IllegalStateException [重复]
【发布时间】:2019-07-12 09:10:46
【问题描述】:

这里是初学者..

我无法创建警报对话框。它发生在我使用 `alertDialog.show();

这个错误--

java.lang.IllegalStateException: 你需要使用 Theme.AppCompat 此活动的主题(或后代)。

我的代码,

 logoImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            AlertDialog.Builder builder=new AlertDialog.Builder(getApplicationContext());
            builder.setTitle("hello");
            builder.setMessage("hello how are you");
            AlertDialog alertDialog= builder.create();
            alertDialog.show(); //line 


        }

    });

我的日志猫..

 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
    at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:555)
    at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:466)
    at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:94)
    at android.support.v7.app.AlertController.installContent(AlertController.java:232)
    at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:279)
    at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
    at android.app.Dialog.show(Dialog.java:283)
    at com.abmm.include_activity$15.onClick(include_activity.java:459)

谢谢你的朋友..

【问题讨论】:

  • @Ashishsingh 我读到这对我没有帮助。我也没有找到任何关于他们在做什么以及为什么做的解释?
  • @Monk 在您调用对话框的活动类中,从 Activity 而不是 AppcompatActivity 扩展。
  • 它已经完成了伙伴@Ashishsingh 它的上下文错误。我在全局范围内声明了上下文 Context mycontext=this;然后 AlertDialog.Builder builder = new AlertDialog.Builder(mycontext);感谢您的支持;-)

标签: java android android-alertdialog illegalstateexception


【解决方案1】:

改变,

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

AlertDialog.Builder builder = new AlertDialog.Builder(this);

【讨论】:

  • this 将不起作用,因为警报位于点击侦听器中。改为引用活动上下文。
  • 如果你从活动中调用 this 而不是传递那个上下文,比如 MainActivity.this 或者如果 this 是片段而不是 getActivity()
  • 嗨@Zun 我试过像 AlertDialog.Builder builder = new AlertDialog.Builder(include_Activity.this);同样的错误正在给出..请帮助
  • @HardikChauhan hiii......我已经做了这个哥们,不知道为什么它会给出同样的错误..请帮助
  • @HardikChauhan 完成了...我声明了 Context mycontext= this;在类的顶部,然后是 AlertDialog.Builder builder = new AlertDialog.Builder(mycontext);它解决了错误..也感谢您的支持...
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 2018-01-10
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
相关资源
最近更新 更多