2

私のアプリケーションはこのように動作します: 異なるボタン ("Category 1"、"Category 2" など) を持つメニューがあり、これらすべてのボタンは "ResultListViewActivity" と呼ばれる同じアクティビティを開き、データベースからのコンテンツを含む ListView を表示します。前にクリックしたボタンによって異なります。

そのため、内容が異なるリストビューを表示する 1 つのアクティビティがあります。このリスト ビューに「フィルター モード」を追加しようとしています。アラートダイアログウィンドウを開く「フィルターボタン」があります。このアラートダイアログにはスピナーがあります。このスピナーにさまざまなコンテンツを表示し、各アイテムにさまざまなリスナーを割り当てる方法に取り組んでいます。たとえば、メイン メニューで [Category 1] ボタンをクリックすると、変数 "filterVariable" が値 1 に設定され、[Category 2] をクリックすると値 2 に設定されます。
スイッチ属性を使用してこれを記述しましたが、ポインター null 例外でアプリがクラッシュします。これが私のコードです:

 OnClickListener filter_listener = new OnClickListener() {

    @Override
    public void onClick(View v) {

        LayoutInflater li = LayoutInflater.from(context);
        View dialogView = li.inflate(R.layout.alertdialog_filter, null);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                context);

        Bundle bundle = getIntent().getExtras();
        int filterVariable = bundle.getInt("filterVariable");

        switch (filterVariable) {

      // if you click on button "category 1" in main menu
        case 1: 
            ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category1, R.id.alertdialog_spinner);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);

            break;
      // if you click on button "category 2" in main menu        
        case 12: 
            ArrayAdapter<?> adapter1 = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category2, R.id.alertdialog_spinner);
            adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter1);

            break;

        }

        alertDialogBuilder.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });


        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // Lorsque l'on cliquera sur annuler on quittera
                        // l'application
                        finish();
                    }
                });

        // set alertdialog_filter.xml to alertdialog builder
        alertDialogBuilder.setView(dialogView);

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    }
}; }

それは本当に私を夢中にさせます、私はポップアップメニューの場合にそれを行うことができました(興味があるかもしれない人のために私のコードはここにあります:さまざまなポップアップメニューに特定のリスナーを設定する方法は?(コード内))しかし今はそうではありませんポップアップメニューはもうスピナーですが、すべてが異なり、ポップアップメニューに対して行ったことは役に立ちません。

4

0 に答える 0