私は、ユーザーが入力しなければならないいくつかのフィールドを持つフラグメントを持っています。例えば、電話番号を言うことができます。ユーザーが番号を入力すると は、フラグメントはMainActivityからメソッドを呼び出し、mainActivityで行われ、いくつかの操作がある、のは想定してみましょう:フラグメント上のprogressDialogを表示するBroadcastReceiver
の1-検証
2 - 検証
私はBroadcarstReceiverを使用MainActivityからFragmentに返信します。したがって、検証が完了すると、BroadcastReceiverを使用してフラグメントにフラグを送信し、progressDialogをユーザーに表示します。
この時点で、検証のための別のフラグが受信されるまで、progressDialogが表示されます。
問題は、RuntimeExceptionについて何らかのエラーが発生していて、アプリケーションがprogressDialogを表示する場所でクラッシュしていることです。
public class ProfileFragment extends Fragment {
ProgressDialog progressDialog;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
...
progressDialog = new ProgressDialog(getContext());
progressDialog.setContentView(R.layout.custom_progressdialog);
...
return rootView;
}
protected BroadcastReceiver ActivityDataReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(ACTION_INTENT.equals(intent.getAction())) {
progressDialog.show();
}
if(ACTION_INTENT2.equals(intent.getAction())) {
progressDialog.dismiss();
}
}
}
これはlogcatを示しものです:
FATAL EXCEPTION: main
Process: com.detgsm, PID: 21736
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at com.android.internal.policy.PhoneWindow.requestFeature(PhoneWindow.java:398)
at com.android.internal.app.AlertController.installContent(AlertController.java:249)
at android.app.AlertDialog.onCreate(AlertDialog.java:423)
at android.app.ProgressDialog.onCreate(ProgressDialog.java:249)
at android.app.Dialog.dispatchOnCreate(Dialog.java:578)
at android.app.Dialog.show(Dialog.java:314)
at com.detgsm.ProfileFragment$7.onReceive(ProfileFragment.java:271)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
ブロードキャストレシーバで進行状況のダイアログを表示できません。 の可能な複製[このリンクをチェック](http://stackoverflow.com/questions/8766739/show-an-alert-dialog-in-broadcast-receiver-after -a-system-reboot) –
BRの**進行状況ダイアログを**作成することはできません。そのオブジェクトへの参照がある場合。それを表示することができます。 – mallaudin
@mallaudinどうすればBRからフラグを受け取ったときに、そのフラグメントにprogressDialogを表示できますか? – masmic