Android使用DialogFragment,自定义对话框:
效果图:
当我点击结算时,弹出对话框:
步骤一:创建:pay_dialog_fragment.xml:布局:
步骤二:创建Fragment继承自DialogFRagment:
package com.hlrj.posclound.fragments;
import com.hlrj.posclound.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
/**
* 自定义dialog警告框,弹出后,用于用户选择需要的 支付方式:
* @author lenovo
*/
@SuppressLint("ValidFragment")
public class PayDialogFragment extends DialogFragment{
/**
* 用volatile修饰的变量,
* 线程在每次使用变量的时候,都会读取变量修改后的最的值。
* volatile很容易被误用,用来进行原子性操作。
*/
private static volatile PayDialogFragment dialog = null;
//私有化构造函数:
private PayDialogFragment(){}
/**
* 单例模式:创建 Fragment:
* @return
*/
public static PayDialogFragment getInstance(){
if(dialog==null){
synchronized(PayDialogFragment.class){
if(dialog ==null){
dialog = new PayDialogFragment();
}
}
}
return dialog;
}
/**
* 使用 onCreateView 创建 对话框的样式 使用自定义视图
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
/**
* 先设置 无标题样式的 对话框
*/
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View view = inflater.inflate(R.layout.pay_dialog_fragment, container,false);
return view;
}
}
步骤三:Acitvity单击事件中调用,创建Fragment对象:
/**
* 单击事件:
*/
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.others_text_toPay:
PayDialogFragment editNameDialog = PayDialogFragment.getInstance();
editNameDialog.show(getFragmentManager(), "PayDialog");
break;
}
}
Demo地址: https://github.com/229457269/FragmentDialogDemo