Выбор всплывающего окна для показа статистики
В процессе работы приложения собирается некая статистика, которая должна выводиться в отдельные таблицы. И открываться в отдельном окне. Я правильно понимаю, что для этого используем AlertDialog? Или есть какие-то иные, лучшие средства?
В окне находится:
- 6 listview (видны всегда только 2, зависит от некоторых параметров работы, выводится только нужная информации)
- несколько текстовых записей
- 2 кнопки
Ответы (1 шт):
Я бы советовал посмотреть в сторону двух возможных вариантов:
Dialog/AlertDialogсо своей разметкойDialogFragment
Суть Dialog/AlertDialog в том что вы сможете его вызывать из активности например и он будет находится в пределах активности. Ему будут доступны все переменные объявленные в классе, методы и другие ресурсы. Но мне кажется что это будет не совсем правильно использовать такое лаконичное решение для всей информации которую вы представили в вопросе. Тем не менее ниже я привожу код для создания Dialog/AlertDialog:
public class ViewDialog {
public void showDialog(Activity activity) {
final Dialog dialog = new Dialog(activity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
dialog.setContentView(R.layout.newcustom_layout);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
FrameLayout mDialogNo = dialog.findViewById(R.id.frmNo);
mDialogNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Cancel" ,Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
FrameLayout mDialogOk = dialog.findViewById(R.id.frmOk);
mDialogOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Okay" ,Toast.LENGTH_SHORT).show();
dialog.cancel();
}
});
dialog.show();
}
}
и вызываете данный класс где вам нужно:
ViewDialog alert = new ViewDialog();
alert.showDialog(CustomDialogActivity.this);
так же в метод можно передать и другие параметры, либо переместить тело метода в активность. Второй вариант - использовать dialogfragment как показано в этом примере. С одной стороны DialogFragment хуже потому что туда нужно будет передать ваши данные, если у него не будет доступа к ресурсам на устройстве. С другой стороны обычный диалог это как мне кажется слишком просто для того что вам нужно. В любом случае эти два предложенные варианта в состоянии решить вашу проблему.