ListFragment作为DialogFragment

Ade*_*nov 1 android

有可能显示ListFragmentDialog?或者没有办法,我应该在自己内部实现自己的ListView,空洞的TextView和不确定的?ProgressBarDialogFragment

Hps*_*urn 7

另外一个选项:

构建对话框片段:

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;    

public class ListDialogFragment extends DialogFragment {

    private OnListDialogItemSelect listener;
    private String title;
    private String[] list;

    public ListDialogFragment(OnListDialogItemSelect listener, String[] list, String title) {
        this.listener=listener;
        this.list=list;
        this.title=title;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        return new AlertDialog.Builder(getActivity())
                .setTitle(title)
                .setCancelable(false)
                .setItems(list, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int item) {

                        listener.onListItemSelected(list[item]);
                        getDialog().dismiss(); 
                        ListDialogFragment.this.dismiss();

                    }
                }).create();

    }

    public interface OnListDialogItemSelect{
        public void onListItemSelected(String selection);
    }

}
Run Code Online (Sandbox Code Playgroud)

在你的碎片活动上像这样:

public class YourActivity extends FragmentActivity implements OnListDialogItemSelect{

    private void showCountryFragment(){
         FragmentManager fm = getSupportFragmentManager();
         ListDialogFragment newFragment = new ListDialogFragment(this,getCountries(),"Country:");
         newFragment.show(fm, "country_picker");
    }

    @Override
    public void onListItemSelected(String selection) {
        _bt_country.setText(selection);
    }

}
Run Code Online (Sandbox Code Playgroud)