DialogFragment的使用+j接口回调
来源:互联网 发布:步兵升级数据 编辑:程序博客网 时间:2024/05/22 13:16
虽然android有Alterdialog和Progressiondialogl两种,但是这两种都太局限了,有个折中的方法是重新定义个layout,并把该layout设置成dialog样式,这样可以间接的自定义个dialog样式,但是现在android提供了一个更基础的类DialogFragment。然后利用接口回调的方法对点击事件进行监听。
1.DialogFragment.class
@SuppressLint("NewApi")
public class DiagFragment extends DialogFragment implements OnClickListener {
private Context mContext;
private TextView mTv1, mTv2, mTv3;
public interface OnDeptCallBack {
public void onCallBack(String st);
}
private OnDeptCallBack onBack;
public DiagFragment(){
//去除默认的dialog头部
int style = DialogFragment.STYLE_NO_TITLE;
setStyle(style, 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.list_dialog, null);
mContext = getActivity();
initView(view);
return view;
}
/**
* 初始化控件
*/
private void initView(View view) {
mTv1 = (TextView) view.findViewById(R.id.tv_1);
mTv2 = (TextView) view.findViewById(R.id.tv_2);
mTv3 = (TextView) view.findViewById(R.id.tv_3);
mTv1.setOnClickListener(this);
mTv2.setOnClickListener(this);
mTv3.setOnClickListener(this);
}
/**
* @return the onBack
*/
public OnDeptCallBack getOnBack() {
return this.onBack;
}
/**
* @param onBack
* the onBack to set
*/
public void setOnBack(OnDeptCallBack onBack) {
this.onBack = onBack;
}
/**
* 设置弹出的Dialog的样式,这边是居中效果
*
*/
@Override
public void onResume() {
LayoutParams params = getDialog().getWindow().getAttributes();
DisplayMetrics mDisplayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics);
params.width = mDisplayMetrics.widthPixels / 2;
params.height = LayoutParams.WRAP_CONTENT;
getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
super.onResume();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_1:
onBack.onCallBack("这是text1");
break;
case R.id.tv_2:
onBack.onCallBack("这是text2");
break;
case R.id.tv_3:
onBack.onCallBack("这是text3");
break;
default:
break;
}
}
}
2.list_dialog.xml
三个textview而已,该布局根据需求而定
3.MainActivity.class
public class MainActivity extends Activity {
private Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn=(Button)findViewById(R.id.bt);
mBtn.setOnClickListener(new OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View arg0) {
final DiagFragment diaf=new DiagFragment();
diaf.setOnBack(new OnDeptCallBack() {
@Override
public void onCallBack(String st) {
Toast.makeText(MainActivity.this, st, Toast.LENGTH_LONG);
diaf.dismiss();
}
});
diaf.show(MainActivity.this.getFragmentManager(), null);
}
});
}
至此整个项目结束,当你在dialogfragment点击那些textview,在activity就可以根据接口回调监听事件。
如果不是很明白的可以下载源码看看:)
http://download.csdn.net/detail/u013651405/9032603
- DialogFragment的使用+j接口回调
- Android:DialogFragment的使用
- ApiDemos--DialogFragment的使用
- DialogFragment的使用示例
- DialogFragment的相关使用
- Dialogfragment的使用
- Android-----DialogFragment的使用
- dialogfragment 的使用
- DialogFragment && NumberPicker的使用
- DialogFragment的使用
- DialogFragment的简单使用
- DialogFragment的使用
- DialogFragment和AlertDialog的使用
- DialogFragment的使用(自定义Dialog )
- Android中DialogFragment的使用
- Android:页面销毁时DialogFragment使用回调的一种方式和思考
- android 之 Fragment 中使用 DialogFragment 创建回调
- 使用DialogFragment
- 你应该掌握的七种回归技术
- 03-树2. List Leaves (25)
- Spring bean reference example
- 个人发展职业定位思考
- POJ 3041 Asteroids(匈牙利算法模板)
- DialogFragment的使用+j接口回调
- HDU 1248:寒冰王座【Floyd & 完全背包】
- remove all the same elements
- 解析XML
- 获取设备唯一标识码
- 使用7zip压解各种文件的常用命令
- M3U8简介
- Xposed源码剖析——Xposed初始化
- POJ--3529--Wormholes