假设您正在将一些文件上传到服务器,点击上传按钮后,应打开一个对话框,提示输入标题和可选标签。对话框本身包含 2 个按钮,表示取消并继续。
使用布局 xml 文件根据需要制作 UI。
然后创建一个扩展 DialogFragment 的类。在 onCreateView() 方法中膨胀布局并初始化视图。
在该类中创建一个接口
public interface uploadDialogInterface
{
public void senddata(String title, String tag);
}
uploadDialogInterface interfaceObj;
String title="";
String tag=" ";
重要的是你需要重写 onAttach() 方法
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context=context;
interfaceObj= (uploadDialogInterface) getTargetFragment();
}
并在on Button点击调用接口方法之类的
@Override
public void onClick(View v) {
int id=v.getId();
if(id== R.id.vB_fud_cancel)
{
dismiss();
}
else if(id== R.id.vB_fud_upload)
{
title=mVideotitle.getText().toString();
tag=mOptionaltag.getText().toString();
if(mVideotitle.getText().toString().isEmpty()) {
Snackbar.make(mVideotitle,"Please enter the video title", Snackbar.LENGTH_SHORT).show();
}else
{
interfaceObj.senddata(title,tag);
dismiss();
}
}
}
并且在您启动对话框的 Fragment 或 Activity 内部应该包含 setTargetFragment 属性。
private void callUploadDialog()
{
UploadDialogFragment fragment = new UploadDialogFragment();
fragment.setTargetFragment(this, 0);
FragmentManager manager = getFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_in);
fragment.show(ft, "UploadDialogFragment");
fragment.setCancelable(false);
}
最后你应该实现接口(在对话框片段中声明)并覆盖方法
@Override
public void senddata(String title,String optionaltag) {
this.videoTitle=title;
this.optionalTag=optionaltag;
}
我认为这篇文章对那些第一次使用对话框片段的人会有所帮助。我很难找到解决方案。希望这将在未来解决某人的问题。
(对不起语言)