我在我的应用中和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崩溃报告
答案 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)
编辑:每当取消对话框窗口时,我都会遇到相同的问题,我发现每次发生这种情况时,应用程序的上下文都为空。