0

DialogFragment を拡張するクラスで AlertDialog を作成します。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    super.onCreateDialog(savedInstanceState);

    Intent locationTypesIntent = new Intent(getActivity(), LocationTypesRetrieverService.class);
    getActivity().getApplicationContext().startService(locationTypesIntent);

    itemsOnList = new CharSequence[noOfItems];
    itemsChecked = new boolean[noOfItems];
    for(int i=0;i<noOfItems;i++)
    {
        itemsOnList[i] = "Location " + i;
        itemsChecked[i] = true;
    }

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Filter locations")
           .setMultiChoiceItems(itemsOnList, itemsChecked, 
                   new DialogInterface.OnMultiChoiceClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        System.out.println("clicked choice");                           
                    }
                }
     );
    createdAlertDialog = builder.create();
    return createdAlertDialog;
}

次に、表示された項目を更新するために、AlertDialog でリストを取得し、アダプタを変更しようとします。

public void updateOptions(String[] optionsArray)
{
    ListView list = createdAlertDialog.getListView();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),list.getId(),optionsArray);
    list.setAdapter(adapter);
    //list.invalidate();
}

エラーが発生します:

E/AndroidRuntime(9401): android.content.res.Resources$NotFoundException: リソース ID #0x1020403 タイプ #0x12 が無効です

何が起こっている???

4

1 に答える 1

0

次の行を移動します。

list.setAdapter(adapter);

onViewCreatedあなたのフラグメントの方法の下で:

public void onViewCreated(View view,Bundle savedInstanceState){
    //...

    list.setAdapter(mAdapter);
}
于 2013-06-16T16:27:37.223 に答える