#android #android-alertdialog
#Android #android-alertdialog
Вопрос:
в моем приложении я покажу окно оповещения с сообщением и кнопкой ok. в фоновом режиме я нажимаю на какой-то api и сохраняю его в базе данных (я делаю это в асинхронной задаче). мое требование заключается в том, что я хочу отключить кнопку ok до завершения фонового процесса. После завершения фонового процесса мне нужно включить кнопку ok в окне оповещения.
мой код создания окна оповещения:
helpBuilder1 = new AlertDialog.Builder(Home.this);
helpBuilder1.setTitle("Welcome");
helpBuilder1.setMessage("Thank you for waiting while App Installs");
mOkButton = helpDialog1.getButton(AlertDialog.BUTTON_POSITIVE);
mOkButton.setEnabled(false);
if(mOkButton.isEnabled()==false){
Log.e("Home.java - ShowPopUp", "button is disablled");
new First_Time_Sync().execute();
}
mOkButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
helpDialog1.dismiss();
showSilde_show_PopUp();
}
});
helpDialog1 = helpBuilder1.create();
helpDialog1.show();
пожалуйста, помогите мне.
Комментарии:
1. необходимо, чтобы это был AlertDialog? Почему бы не реализовать как ProgressDialog? Почему кнопка OK должна существовать?
2. я должен отключить кнопку ok до завершения фонового процесса. после включения кнопки ok пользователь взаимодействует с приложением. мне это нужно в окне оповещения. пожалуйста, помогите мне.
3. Вместо этого я бы предпочел показывать индикатор выполнения, как только вы закончите процесс загрузки, просто покажите окно оповещения с кнопкой ok. Я уверен, что это лучшая практика вместо того, что вы прокомментировали ранее.
Ответ №1:
Используйте getButton() в AlertDialog, чтобы получить доступ к базовой кнопке ok
Button mOkButton = helpDialog1.getButton();
mOkButton.setEnabled(false)`
Комментарии:
1. я получаю сбой кнопки приложения mOkButton = helpDialog1.getButton(); mOkButton. Значение setEnabled(false) находится над helpDialog1 = helpBuilder1.create(); Но helpDialog1 = helpBuilder1.create(); находится перед кнопкой mOkButton, которая не отображает кнопку. пожалуйста, обновите соответствующий xml.
Ответ №2:
к сожалению, кажется, что нет прямого способа API. однако это моя идея о более нестандартном решении: [Обновление при вводе: решение Rajdeeps звучит разумно, попробуйте сначала это 😉 Если это не поможет, попробуйте это.]
создайте пользовательский макет AlertDialog с вашей кнопкой и добавьте его в свой AlertDialog с помощью
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.yourlayout,(ViewGroup) findViewById(R.id.yourLayoutsOuterLinearLayout));
builder.setView(view);
макет может выглядеть примерно так:
<LinearLayout
android:id="@ id/yourLayoutsOuterLinearLayout"
android:layout_height:...>
<Button
android:id="@ id/myButton"
android:...>
</Button>
</LinearLayout>