使用getWindow()。setBackgroundDrawable()的IllegalStateException

时间:2019-01-18 13:25:23

标签: java android

我在我的应用中和onCreate方法内部将“活动”用作对话框,我正在使用 getWindow().setBackgroundDrawable() ,但它给了我 illegalStateException (大多数在oreo设备上)。

这是我的DialogActivity代码:

ImageButton btnStop,btnCancel;
Handler handler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog);
    this.setFinishOnTouchOutside(false);

    btnCancel=findViewById(R.id.btnCancel);
    btnStop=findViewById(R.id.btnStopAlarm);
    btnStop.setOnClickListener(this);
    btnCancel.setOnClickListener(this);


    getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}

这是我的DialogActivity崩溃报告

here is my crash report

here is my crash report

2 个答案:

答案 0 :(得分:0)

您的代码似乎没有错。如果找不到原因,可以通过样式进行设置。在styles.xml文件中定义以下内容:

<style name="MyActivityStyle" parent="AppTheme">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

现在将其设置为您声明活动的清单:

<activity
        android:name="com.myproject.mypackage.MyActivity"
        android:theme="@style/MyActivityStyle" />

答案 1 :(得分:0)

什么时候发生?是在按下按钮之后还是之前? 如果是在之后,则需要在放大之前设置对话框窗口的所有属性。 放置代码:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

之前:

setContentView(R.layout.activity_dialog)

编辑:每当取消对话框窗口时,我都会遇到相同的问题,我发现每次发生这种情况时,应用程序的上下文都为空。