У меня есть одно действие, которое называется Tourmapactivity и Stopchoicedialogfragment. < /p>
Это приложение типа маршрута карты. Когда пользователь запускает маршрут, этот модал открывается. Если пользователь нажимает на какую -либо из параметров, когда пользователь входит в остановку 1, диалог не появляется снова, как и ожидалось. Но это не работает. < /P>
private void onTourDataInitialized() {
Log.d(TAG, "ON TOUR DATA INITIALIZED");
if (tourStopList != null && stopPosition < tourStopList.size()) {
tourStop = tourStopList.get(stopPosition);
} else {
tourStop = null;
finish();
}
Log.d(TAG, "IT IS REACHING TO SHOW STOP CHOICE QUESTION"
+ getIntent().getBooleanExtra(INTENT_EXTRA_SHOW_MAP_CHOICE, false));
boolean showChoice = getIntent().getBooleanExtra(INTENT_EXTRA_SHOW_MAP_CHOICE, false);
Log.d(TAG, "SHOW MAP CHOICE extra = " + showChoice);
if (showChoice) {
getIntent().removeExtra(INTENT_EXTRA_SHOW_MAP_CHOICE);
Log.d(TAG, "REMOVED EXTRA");
showStopChoiceDialog();
}
}
private void showStopChoiceDialog() {
Log.d(TAG, "SHOW STOP CHOICE DIALOG CALLED tourStop="
+ (tourStop != null ? tourStop.getNumber() : "null"));
if (!isGoogleMap) {
Log.d(TAG, "NOT Google Map, returning");
return;
}
Log.d(TAG, "IN THE METHOD");
if (getSupportFragmentManager().findFragmentByTag("stopDialog") == null) {
StopChoiceDialogFragment dialog = new StopChoiceDialogFragment();
dialog.show(getSupportFragmentManager(), "stopDialog");
} else {
Log.d(TAG, "Dialog already showing, skip.");
}
}
< /code>
public class StopChoiceDialogFragment extends DialogFragment {
public interface StopChoiceListener {
void onListChosen();
void onMapChosen();
void onLocationChosen();
}
private StopChoiceListener listener;
private boolean dialogDismissed = false;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
Log.d("StopChoiceDialog", "onAttach()");
if (context instanceof StopChoiceListener) {
listener = (StopChoiceListener) context;
} else {
throw new ClassCastException(context.toString()
+ " must implement StopChoiceDialogFragment.StopChoiceListener");
}
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.d("StopChoiceDialog", "onCreateDialog()");
LayoutInflater inflater = requireActivity().getLayoutInflater();
View stopDialogView = inflater.inflate(R.layout.layout_stop_dialog_fragment, null);
TextView noButton = stopDialogView.findViewById(R.id.button3);
TextView yesButton = stopDialogView.findViewById(R.id.button2);
TextView locationButton = stopDialogView.findViewById(R.id.button4);
AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
builder.setView(stopDialogView);
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
if (dialog.getWindow() != null) {
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
}
noButton.setOnClickListener(v -> {
dismiss();
if (listener != null) listener.onListChosen();
});
yesButton.setOnClickListener(v -> {
dismiss();
if (listener != null) listener.onMapChosen();
});
locationButton.setOnClickListener(v -> {
dismiss();
if (listener != null) listener.onLocationChosen();
});
return dialog;
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
Log.d("StopChoiceDialog", "onDismiss()");
dialogDismissed = true; // mark dismissed
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("StopChoiceDialog", "onCreate() new");
// keep instance across config changes (like rotation)
setRetainInstance(true);
// ensures this is displayed as a dialog
setShowsDialog(true);
// optional: prevents dialog from being canceled by back button or outside tap
setCancelable(false);
}
@Override
public void onStart() {
super.onStart();
Log.d("StopChoiceDialog", "onStart()");
}
@Override
public void onResume() {
super.onResume();
Log.d("StopChoiceDialog", "onResume()");
Log.d("StopChoiceDialog", Objects.requireNonNull(getDialog()).toString());
Log.d("StopChoiceDialog", String.valueOf(dialogDismissed));
if (dialogDismissed && getDialog() != null) {
Log.d("StopChoiceDialog", "Force dismissing stale dialog");
dismissAllowingStateLoss();
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d("StopChoiceDialog", "onDestroyView()");
}
@Override
public void onDetach() {
super.onDetach();
Log.d("StopChoiceDialog", "onDetach()");
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ears-twice
Диалог из диалога появляется дважды ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Vuetify, когда диалог открывается из пункта меню. Диалог открылся, но меню все еще появляется
Anonymous » » в форуме CSS - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Достижение плавного прокрутки в EditText с помощью нижнего утечка / диалога / диалога
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-