Стоит задача - реализовать в приложении alertDialog
по нажатию на экран. В принципе это я сделал, оно работает:
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(final LatLng latLng) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MapsActivity.this);
View mView = getLayoutInflater().inflate(R.layout.dialog_isparking, null);
Button yes = (Button) mView.findViewById(R.id.btnYes);
Button no = (Button) mView.findViewById(R.id.btnNo);
}
Но есть проблема - при повороте экрана диалог пропадает. Как я понял, этого можно избежать, если использовать DialogFragment
. Я сделал отдельный класс, за образец взял код отсюда и отсюда
Получилось так:
public class Dialog extends DialogFragment implements View.OnClickListener {
public static Dialog newInstance(int title) {
Dialog frag = new Dialog();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
public android.app.Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder adb = new AlertDialog.Builder(getActivity())
.setTitle("Title!")
.setPositiveButton(R.string.yes, (DialogInterface.OnClickListener) this)
.setNegativeButton(R.string.no, (DialogInterface.OnClickListener) this)
.setMessage(R.string.message_text);
return adb.create();
}
void showDialog() {
DialogFragment newFragment = Dialog.newInstance(1);
newFragment.show(getFragmentManager(), "dialog");
}
@Override
public void onClick(View v) {
}
}
Потом в main activity
пытался сделать так:
public void onMapLongClick(final LatLng latLng) {
Dialog dialog = new Dialog();
dialog.showDialog();
}
При нажатии на экран приложение крашится, андроид студия пишет:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()' on a null object reference
Помогите исправить ситуацию. Мой первый вопрос здесь, надеюсь, мысль донес верно.
Уберите метод void showDialog()
из диалога, а в активити напишите:
Dialog dialog = new Dialog();
dialog.show(getFragmentManager(), "dialog");
Дайте диалогу осмысленное имя.
showDialog() должен быть в активити и подаваться туда должен getSupportFragmentManager(), если диалог на фрагменте то getChildFragmentManager()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Сервер, на который я отправляю запрос определяет мой IP, а как получить этот IP программно, чтобы потом сравнить?
Когда тянешь пальцем экран вертикально, дотягиваешь до края и тянешь дальше, начинает проявляться полукруглая теньЕсть ли возможность её отключить?
Привет уважаемое комьюнити, есть некоторый код на Java, сей код включает в себя переменную типа String, которая в свою хранит следующее содержимое:
В java есть отличный класс Calendar, однако можно ли каким то образом задать время и дату компьютеру?