class Derived : public Base
{
protected:
int d;
public:
void DoSomething()
{
b+=this->b;
d=0;
}
};
//this will work
все, что вам нужно сделать, это установить тему в вашем диалоге.
@Override
public int getTheme() {
return R.style.dialog;
}
стиль
<style name="dialog" parent="android:Theme.Dialog">
<item name="android:windowBackground">@drawable/radius</item>
<item name="android:windowMinWidthMajor">80%</item>
<item name="android:windowMinWidthMinor">85%</item>
<item name="android:windowNoTitle">true</item>
</style>
radius.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="10dp" />
<padding
android:bottom="8dp"
android:left="8dp"
android:right="8dp"
android:top="8dp" />
</shape>
Я думаю, что проблема в android:layout_width="match_parent"
в вашем теге ConstraintLayout. Поскольку диалог не имеет фиксированной ширины, использование match_parent
не будет работать. Может быть, вы могли бы установить фиксированную ширину или минимальную ширину.
Во-первых, дело не в ConstraintLayout
, а в том, как вы реализуете Dialog
. Это предложение и согласно Dialog Documentation :
Класс Dialog является базовым классом для диалогов, но вам следует избегать создания экземпляра Dialog напрямую. Вместо этого используйте один из следующих подклассов:
AlertDialog
Диалог, в котором может отображаться заголовок, до трех кнопок, список выбираемых элементов или пользовательский макет. [1115 ]blockquote>
DatePickerDialog or TimePickerDialog
Диалог с предопределенным пользовательским интерфейсом, который позволяет пользователю выбирать дату или время.Таким образом, в основном вы будете использовать
setView
api:@Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity()); // Setting my layout here builder.setView(R.layout.my_layout); builder.setPositiveButton(/* My Methods */) .setNegativeButton(/* My Methods */); return builder.create(); }
Прочтите об этом в Создание документации пользовательского макета . Если вы хотите больше настроек, создайте собственную тему в
values
>styles.xml
, которую можно использовать во всем приложении, или просто установив ее вместе со сборщиком, например:new AlertDialog.Builder(requireActivity(), R.style.My_Alert_Dialog_Theme);