0

アラート ダイアログ内で GridView を作成することは可能ですか?

現時点では、単語検索があり、解決策 (完了した単語検索) をポップアップ ダイアログに表示したいので、ユーザーはパズルと回答をすばやく切り替えることができます。

こんな感じで実装してみました

AlertDialog.Builder aBuilder = new AlertDialog.Builder(this);

 // set title
 aBuilder.setTitle("The solution");
    GridView g = null ;
    final ArrayAdapter<String> Wordadapter = new ArrayAdapter<String>(getApplicationContext(),
            R.layout.wordsstyle, WordsToFind);
    g.setNumColumns(Length);
    g.setAdapter(Wordadapter);
     aBuilder.setView(g);
 aBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener()
 {
 public void onClick(DialogInterface dialog, int whichButton)
 {
 }
});

ただし、クラッシュするだけです

私はこれをログキャットで取得しています

04-24 21:17:48.472: E/AndroidRuntime(826): FATAL EXCEPTION: main
04-24 21:17:48.472: E/AndroidRuntime(826): java.lang.IllegalStateException: Could not     execute method of the activity
04-24 21:17:48.472: E/AndroidRuntime(826):  at     android.view.View$1.onClick(View.java:3591)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.view.View.performClick(View.java:4084)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.view.View$PerformClick.run(View.java:16966)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.os.Handler.handleCallback(Handler.java:615)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.os.Looper.loop(Looper.java:137)
04-24 21:17:48.472: E/AndroidRuntime(826):  at     android.app.ActivityThread.main(ActivityThread.java:4745)
04-24 21:17:48.472: E/AndroidRuntime(826):  at java.lang.reflect.Method.invokeNative(Native Method)
04-24 21:17:48.472: E/AndroidRuntime(826):  at java.lang.reflect.Method.invoke(Method.java:511)
04-24 21:17:48.472: E/AndroidRuntime(826):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-24 21:17:48.472: E/AndroidRuntime(826):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-24 21:17:48.472: E/AndroidRuntime(826):  at dalvik.system.NativeStart.main(Native Method)
04-24 21:17:48.472: E/AndroidRuntime(826): Caused by: java.lang.reflect.InvocationTargetException
04-24 21:17:48.472: E/AndroidRuntime(826):  at java.lang.reflect.Method.invokeNative(Native Method)
04-24 21:17:48.472: E/AndroidRuntime(826):  at java.lang.reflect.Method.invoke(Method.java:511)
04-24 21:17:48.472: E/AndroidRuntime(826):  at android.view.View$1.onClick(View.java:3586)
04-24 21:17:48.472: E/AndroidRuntime(826):  ... 11 more
04-24 21:17:48.472: E/AndroidRuntime(826): Caused by: java.lang.NullPointerException
04-24 21:17:48.472: E/AndroidRuntime(826):  at com.example.angrywordsearch.Puzzle_Activity.GridPopup(Puzzle_Activity.java:726)
04-24 21:17:48.472: E/AndroidRuntime(826):  at com.example.angrywordsearch.Puzzle_Activity.ViewSolution_Click(Puzzle_Activity.java:686)
04-24 21:17:48.472: E/AndroidRuntime(826):  ... 14 more
4

5 に答える 5

1

DialogTheme を使用してそれ自体をダイアログとして表示する ActivityForResult を開始できます。

http://developer.android.com/guide/topics/ui/themes.htmlを参照してください

例: <activity android:theme="@android:style/Theme.Dialog">

そこから、Activity の setResult(int) メソッドを使用して、グリッドから選択した結果を返すことができます。

それが役に立てば幸い。

于 2013-04-24T21:27:36.453 に答える
1

あなたは に電話g.setNumColumns(Length)していますgnull、その瞬間です。したがって、NullPointerExceptionLogCat で。GridViewおそらく によって、何らかの方法で を初期化する必要がありますGridView g = new GridView(this);

于 2013-04-24T21:24:46.630 に答える
0

簡単な方法は、アクティビティで任意の種類の Gridview デザインを行うだけです。そのアクティビティをダイアログとして表示したい場合は、android:theme="@android:style/Theme.Dialog"通常どおり Android マニフェスト ファイルでそのアクティビティのテーマを設定するだけで、startActivity を使用してグリッド ビューを呼び出すことができます。次に、ダイアログフォームとして開きます(カスタムダイアログのように見えるかもしれません)。setcontent view use (Window.nofeatureDialog) の前に同時に、ダイアログのタイトルを回避します。

これがあなたを助けることを願っています。

于 2013-04-25T06:20:21.523 に答える
0

必ずしもグリッドビューである必要がありますか?...リストビューのようなアラートダイアログにアイテム配列を追加できる原因...これをチェックしてください:

final CharSequence[] items = {"Foo", "Bar", "Baz"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Make your selection");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
     // Do something with the selection
}
});
AlertDialog alert = builder.create();
alert.show();
于 2013-04-24T21:26:36.457 に答える