0

私の Android アプリの開始時に、ユーザーは選択肢のリストから選択する必要があります。これが理由です。

アイテムの長いリストがあり、各アイテムが正確に 1 つのカテゴリに属しているとします。各ユーザーは、1 つの特定のカテゴリにのみ関心があります。したがって、アプリが開始され、SharedPreferences に選択したカテゴリに関する情報が含まれていない場合、モーダル ダイアログが表示されます。ここで、ユーザーは関心のあるカテゴリを選択する必要があります。カテゴリを選択すると、そのカテゴリのアイテムのみが表示されます。

これまでのところ、アクティビティの onCreate() メソッドでこの動作を実装しようとしましたが、明らかに機能しません。ダイアログが表示されないか、少なくとも表示できるほど長くありません。

正直なところ、 から呼び出してコードが機能するとは思っていませんでしたonCreate()Activityただし、ダイアログをトリガーできる場所で適切なイベント ハンドラーを見つけることができませんでした。

(他のデータが読み込まれる前に) カテゴリを確実に選択するには、このダイアログをどこからトリガーする必要がありますか?

前もって感謝します。

コードは次のとおりです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    setContentView(R.layout.activity_item_list);
    ...
    ensureCategorySelected();
}

関連するメソッドはどこにありますか

private void ensureCategorySelected() {
    String chosenCategory = getCategoryFromSharedPreferences();

    if (chosenCategory != null) {
        final CharSequence[] items = getCategories();

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Choose category");
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                // handle the selection of the category
            }
        });
        AlertDialog alert = builder.show();
    }
}
4

1 に答える 1

2

そこに論理的な問題があります。設定がまだ保存されていないときにダイアログを表示したいのですが、設定が保存されているときにダイアログを表示しています。に変更するとchosenCategory == null、動作するはずです。

そして、なぜコードが で動作するとは思わなかったのonCreate()ですか? そこでダイアログを開くのに問題はありません。

編集: onCreate() がダイアログを表示する正しい場所であるかどうかはよくわかりません。ensureCategorySelected()onCreate() の代わりに onStart()を入れてみてください。

このためのアクティビティを実装することを検討することもできますstartActivityForResult()

于 2012-08-02T21:39:21.383 に答える