**DialogFragment的使用示例**
使用环境:在FragmentActivity里面使用对话框时标准的用法现在时采用DialogFragment
public class TagListDialogFragment extends DialogFragment {
private TextView title_diaglog;
private GridView gv_tags;// 标签列表
private Button canclebtn;// 取消按钮
private Button surebtn;
private ArrayList<String> tagarray;
private HashMap<Integer, Boolean> map;
private TagGridListAdapter adapter;
private ArrayList<String> tags;
TheTagsListener listener;
public interface TheTagsListener {
public void returnTagDate(ArrayList<String> tagdata);
}
public TagListDialogFragment(TheTagsListener listener) {
this.listener = listener;
}
@Override
public void onStart() {
super.onStart();
getDialog().getWindow().setLayout(LayoutParams.WRAP_CONTENT, 500);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.taglistdialog_layout, container,
false);
title_diaglog = (TextView) v.findViewById(R.id.title_diaglog);
title_diaglog.setText("标签选择");
gv_tags = (GridView) v.findViewById(R.id.gv_tags);
canclebtn = (Button) v.findViewById(R.id.canclebtn);
surebtn = (Button) v.findViewById(R.id.surebtn);
gv_tags.setSelector(new ColorDrawable(Color.TRANSPARENT));
canclebtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
surebtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "you chose ok!",
Toast.LENGTH_SHORT).show();
if (map.size() > 0) {
for (int i = 0; i < map.size(); i++) {
if (map.get(i)) {
tags.add(tagarray.get(i));
}
}
Log.d("xwj", "标签个数:" + tags.size());
}
// if (listener != null) {
listener.returnTagDate(tags);
// }
dismiss();
}
});
tagarray = getTagListData();
tags = new ArrayList<String>();
map = new HashMap<Integer, Boolean>();
for (int i = 0; i < tagarray.size(); i++) {
map.put(i, false);
}
gv_tags.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int pos,
long arg3) {
if (map.get(pos)) {
map.put(pos, false);
} else {
map.put(pos, true);
}
adapter.notifyDataSetChanged();
}
});
adapter = new TagGridListAdapter(getActivity(), tagarray, map);
gv_tags.setAdapter(adapter);
return v;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
private ArrayList<String> getTagListData() {
ArrayList<String> taglist0 = new ArrayList<String>();
String tag1 = "海景";
String tag2 = "风光";
String tag3 = "自然";
String tag4 = "山水";
String tag5 = "温泉";
String tag6 = "乐园";
String tag7 = "休闲";
String tag8 = "度假";
taglist0.add(tag1);
taglist0.add(tag2);
taglist0.add(tag3);
taglist0.add(tag4);
taglist0.add(tag5);
taglist0.add(tag6);
taglist0.add(tag7);
taglist0.add(tag8);
return taglist0;
}
}
调用显示对话框:
// 显示对话框选择器
private void showTagsFragemnt() {
TagListDialogFragment.TheTagsListener thetagListener = new TheTagsListener() {
public void returnTagDate(ArrayList<String> tagsdate) {
Log.d("xwjd", "标签个数有:" + tagsdate.size());
String[] tags_all = tagsdate.toArray(new String[tagsdate.size()]);
StringBuffer sb = new StringBuffer();
for(int i = 0; i < tags_all.length; i++){
sb. append(tags_all[i]);
sb.append(" ");
}
route_tag.setText(sb.toString());
}
};
DialogFragment fragment = new TagListDialogFragment(
thetagListener);
fragment.show(getSupportFragmentManager(), "dialog");
}