Подскажите пожалуйста, как правильно будет реализовать.
У меня имеется окно закрытия приложения (при нажатии на кнопку назад из главного экрана появляется диалоговое окно с двумя кнопками: выйти и закрыть окно). Такую мини-систему мне нужно использовать в двух разных классах.
Придется дважды создавать этот код в двух классах, либо есть какие-то другие методы сделать код более гибким?
Ты можешь создать родительский класс, написать код диалога в нём.
В двух разных классах ты наследуешься от этого родительского класса и вызываешь в них метод родительского класса, который отображает диалог.
Чтоб диалог был с разным содержимым, просто принимай на вход метода нужные данные и подставляй внутри метода в родительском классе. Метод не должен быть private
.
Например, родитель с методом для диалога:
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
public class BaseActivity extends AppCompatActivity {
public void showAlert(Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Заголовок")
.setMessage("Содержимое")
.setCancelable(false)
.setNegativeButton("Отмена",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//при необходимости какой-то код на отмену...
//...
dialog.dismiss();
}
})
.setPositiveButton("Ок",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//при необходимости какой-то код на принятие...
//...
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
И твои активити, которые наследуются от родительского класса (BaseActivity):
import android.os.Bundle;
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showAlert(this);
}
}
В итоге ты вызываешь метод
showAlert(this);
который написан в BaseActivity
в любом классе, который наследуется от него.
Если нужно изменять диалог в зависимости от экрана, то можно добавить дополнительные аргументы в метод в классе BaseActivity
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь убрать пробелы из строки, но ничего не происходит
Пытаюсь подключиться к базе запущенной из XAMPP с другого компьютера по локалкеАдрес сервера 192
Друзья! Я понял как работают сеттеры, геттеры и конструкторыНо не понял одну вещь:
Проблема следующего характера, создал список checkBox-ов при помощи recyclerView, наполняю его следующим образом: