Ich habe eine App, in der eine Nachricht gesendet wird und ihr Bericht nach einiger Zeit durch BroadcastReceiver
empfangen wird. Dieser Bericht wird dem Benutzer über den Dialog angezeigt, für den ich DialogFragment
verwende, wie unten gezeigt.DialogFragment anzeigen, selbst wenn sich der Kontext ändert
myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(firstTime)
firstTime = false;
boolean anyError = false;
switch (getResultCode()) {
case Activity.RESULT_OK:
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_NULL_PDU:
case SmsManager.RESULT_ERROR_RADIO_OFF:
anyError = true;
break;
}
sent.add(anyError);
CustomAlertDialogFragment customAlertDialogFragment = CustomAlertDialogFragment.newInstance("Title",logMessage);
customAlertDialogFragment.show(getActivity().getSupportFragmentManager(),"TAG");
sent.clear();
}
};
Der Code für CustomDialog
ist unten.
public class CustomAlertDialogFragment extends DialogFragment {
public static CustomAlertDialogFragment newInstance(String title, String content) {
CustomAlertDialogFragment customAlertDialogFragment = new CustomAlertDialogFragment();
Bundle args = new Bundle();
args.putString("title",title);
args.putString("content", content);
customAlertDialogFragment.setArguments(args);
return customAlertDialogFragment;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String title = getArguments().getString("title");
String content = getArguments().getString("content");
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// title bar string
builder.setTitle(title);
builder.setPositiveButton(R.string.ok, null);
builder.setMessage(content);
AlertDialog errorDialog = builder.create();
// return the Dialog object
return errorDialog;
}
}
Wenn der Benutzer zu jedem anderen Fragment
oder Activity
mittlerweile ist der Dialog nicht angezeigt. Es sollte NullPointerException
werfen, wenn es Kontext nicht aber seinen nicht bekommt. Was kann die mögliche Alternative oder Lösung sein? Ich habe andere SO-Fragen angesprochen, bei denen Mitglieder gebeten haben, stattdessen eine Benachrichtigung zu verwenden, aber meine Anforderung ist ein Dialog. Bitte helfen Sie.