いつかメッセージが送信され、そのレポートがいつかBroadcastReceiver
まで届くアプリがあります。このレポートは、以下に示すようにDialogFragment
を使用しているダイアログを介してユーザーに表示されます。コンテキストが変更されてもDialogFragmentを表示
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();
}
};
CustomDialog
のコードは以下のとおりです。
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;
}
}
ユーザーは、他のFragment
か一方Activity
に移動した場合、ダイアログは表示されません。コンテキストが取得されない場合は、NullPointerException
が返されます。これに対する可能な選択肢または解決策は何か。私はメンバーが代わりに通知を使用するよう求めているが、私の要件はダイアログであるので、他のSOの質問を参照しました。助けてください。