クイズアプリがあります。そして、ユーザーが警告ダイアログから質問の種類を選択するようにします。そのため、アラート ダイアログにはチェック ボックス ボタンがあり、ユーザーが複数のタイプを選択できる場合に使用します。ユーザーがアラート ダイアログの肯定ボタンをクリックすると、if 条件に情報が送信され、条件によって質問がフィルター処理され、配列に渡されます。問題は oncreate 内の配列であり、アラート ダイアログを同じクラスにしたいので、クラス oncreate を実行すると、配列に情報を渡さなかったため、null 例外が発生します。oncreate() を遅らせて、ユーザーがアラート ダイアログの肯定的なボタンをクリックした後にのみロードするようにするにはどうすればよいですか。アラート ダイアログは同じクラスになります。どうすればそれができますか?出来ますか?ありがとう。
4 に答える
いいえ、できません。アクティビティ内の OnCreate() メソッド内で何かを遅らせようとすると、その時点でアラート ダイアログを配置するコンテキストがないため、例外がスローされます。codeMagic が以前に述べたように、このアクティビティの前に以前のアクティビティがある場合、最善の策は、そのインテントで startActivity を呼び出す前にアラートを作成することです。
この場合、フラグメントを使用することをお勧めします。Activty を読み込み、ダイアログを表示し、回答に基づいて「正解の断片」または「無効な回答の断片」を表示します。このソリューションでは、アクティビティがロードされ (遅延する必要はありません)、アクティビティのコンテンツを動的に変更するだけです。
onCreate() は、 Android アクティビティのライフサイクルごとにアクティビティが作成されたときに最初に呼び出されるため、いいえ。「OK」をクリックしない限り開始したくない場合、なぜ同じアクティビティでそれが必要なのかわかりません。独自のクラスまたは前のアクティビティに入れます。
AsyncTaskクラスを使用してみてください。onPostExecuteメソッドは、あなたが探している仕事をするかもしれません..