Я использую Activity как диалог в своем приложении и в методе 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
В вашем коде нет ничего плохого. Если вы не можете найти причину, вы можете установить ее с помощью стилей. Определите следующее в своем файле 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" />
Когда это происходит? Это после нажатия кнопки или до? если это после того, как вы хотите установить все атрибуты диалогового окна, прежде чем его надувать. Поместите код:
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
перед:
setContentView(R.layout.activity_dialog)
РЕДАКТИРОВАТЬ: у меня была та же проблема всякий раз, когда диалоговое окно было отменено, я обнаружил, что в моем случае контекст приложения был null каждый раз, когда это происходило.