Ошибка ссылки Null добавление пользовательского макета в диалоговое окно предупреждения

Я создаю диалоговое окно настраиваемого предупреждения

// Biuld the dialog
AlertDialog.Builder alert = new AlertDialog.Builder(this);

// Create the dialog
AlertDialog alertToShow = alert.create();

// Set keyboard to the dialog
alertToShow.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

// Add custom layout to the dialog
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_view, null);
alert.setView(dialogView);

// Show the dialog
alertToShow.show();

Но следующая строка сверху, где я добавляю свой пользовательский макет

f1.addView(inflater.inflate(R.layout.dialog_view, f1, false));

приводит к ошибке

Попытка вызова виртуального метода ‘ void android.штучка.FrameLayout.addView (android.вид.View) ‘ для ссылки на нулевой объект

Есть идеи, как исправить ошибку?

2 ответа

  1. Вы должны найти вид после отображения диалогового окна или после того, как макет завышен. Не раньше

    // Add custom layout to the dialog
    LayoutInflater inflater = getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.dialog_view, f1, false)
    FrameLayout f1 = (FrameLayout) dialogView.findViewById(android.R.id.custom);
    f1.addView(dialogView);
    
    // Show the dialog
    alertToShow.show();
    

    Хотя, я думаю, вы хотитеalertToShow.setView(dialogView), может быть

  2. Перед созданием диалогового окна необходимо добавить представления

        // Add custom layout to the dialog
        LayoutInflater inflater = this.getLayoutInflater();
        View dialogView = inflater.inflate(R.layout.dialog_view, null);
        alert.setView(dialogView);
    
        // Create the dialog
        AlertDialog alertToShow = alert.create();
    
        // Set keyboard to the dialog
        alertToShow.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    
        // Show the dialog
        alertToShow.show();