您的位置:首页 > 移动开发

Android Api demo系列(15) (App>Fragment>FragmentAlertDialog高级使用)

2017-08-31 10:15 267 查看

App>Fragment>FragmentAlertDialog高级使用

本文讲的是DialogFragment的叠加使用
核心逻辑在下面这个方法中:
void showDialog() {
mStackLevel++;
//DialogFragment.show()将负责在事务中添加片段。
// 我们也想删除任何当前显示的对话框,所以做我们自己的交易,并在这里照顾。
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);//设置将上一个fragment回退到栈中,方便回退显示上一个fragment。

// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog");
}


可以一直调用这个方法而产生很多个DialogFragment叠加在一块。

因为现实只能显示一个fragment,所以先要移除之前的fragment,当回退的时候上一个fragment在栈中,所以直接就显示上一个fragment了。
从代码中可以看出每次都创建一个dialogfragment对象show出来。

而且在Dialogfragment中的oncreateview方法中返回的view显示dialog布局。而不是之前在oncreatDialog方法中返回一个AlertDialog对象。所以只能当此为一个简单的fragent对待。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_dialog, container, false);
View tv = v.findViewById(R.id.text);
((TextView)tv).setText("Dialog #" + mNum + ": using style "
+ getNameForNum(mNum));

// Watch for button clicks.
Button button = (Button)v.findViewById(R.id.show);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// When button is clicked, call up to owning activity.
((FragmentDialog)getActivity()).showDialog();
}
});

return v;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: