Java到Android小项目(自定义Dialog)来理解接口回调在项目中的应用
来源:互联网 发布:淘宝苏泊尔电压力锅 编辑:程序博客网 时间:2024/06/05 20:08
1.首先来看演示结果:
案例代码目录结构:
1.未运行时候的界面:
2.运行之后项目:(最底层MainActivity.class界面,上册绿色是自定义的CustomDialog弹窗界面)
3.点击x号:将消失,点击购买套餐将调整到对应页面
2.分析过程:
首先CustomDialog是外部自定义的一个弹窗,所以弹窗里面的关闭和购买控件属于弹窗本身而不属于MainActivity.class,在MainActivity里面无法实例化,所以到我们需要关闭和购买时候,无法MainActivity.class里面进行相应的事件操作。这时候我们就需要定义一个接口(LeaveMyDialogListener),在MainActivity.class里面实现接口(或者内部类形式),将MainActivity对象(接口)的引用通过CustomDialog的一个方法以参数形式传递到CustomDialog.class给CustomDialog里面的接口变量赋值(this.listener= listeners;),在需要时候通过接口方法来实现回调。
3.代码过程:
1.自定义的Dialog类:
public classCustomDialogextendsDialogimplementsView.OnClickListener {
privateContextcontext;
privateLeaveMyDialogListenerlistener;
//创建接口用来实现回调(可以在内部也可以定义一个单独的接口看你习惯了)
interfaceLeaveMyDialogListener {
voidonClick(View view);
}
privateImageButtonib_buy_pac_close;
privateImageButtonib_buy_pac_btn;
//TODO这里是imageView这张图片的背景。
privateStringmimage;
publicCustomDialog(@NonNullContext context) {
super(context);
}
//3.这里给接口变量赋值
publicCustomDialog(Context context,inttheme, LeaveMyDialogListener listeners) {
super(context, theme);
this.context= context;
this.listener= listeners; //3.这里给接口变量赋值
}
//4.创建Activity
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_dialog);
initView();
}
private voidinitView() {
//5.实例化控件
ib_buy_pac_close= (ImageButton) findViewById(R.id.ib_buy_pac_close);
ib_buy_pac_btn= (ImageButton) findViewById(R.id.ib_buy_pac_btn);
// 7.点击之后
ib_buy_pac_close.setOnClickListener(this);
ib_buy_pac_btn.setOnClickListener(this);
}
//8.当点击关闭和购买时候触发接口进行回调
@Override
public voidonClick(View v) {
listener.onClick(v);
}
}
1.MainActivity.class代码:
packagecom.example.ls.customdialog;
importandroid.content.Intent;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
public classMainActivityextendsAppCompatActivity {
privateCustomDialogcustomDialog;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.首先实例化
initView();
//6.然后显示弹窗
customDialog.show();
}
private voidinitView() {
/*2.这里是内部类的写法,当然也可以实现接口:看你喜好*/
customDialog=newCustomDialog(this, R.style.Theme_AppCompat_Light,newCustomDialog.LeaveMyDialogListener() {
@Override
public voidonClick(View view) {
switch(view.getId()) {
//9.实现回调
caseR.id.ib_buy_pac_close:
customDialog.dismiss();
break;
caseR.id.ib_buy_pac_btn:
startActivity(newIntent(MainActivity.this, ToOtherActivity.class));
break;
}
}
});
}
}
当然就这个案例是相对于接口回调来自定义的一个外部弹窗:我们如果不想用接口回调我们可以在MainActivity.class里面自定义View布局设置弹窗。就不用使用接口回调。
0 0
- Java到Android小项目(自定义Dialog)来理解接口回调在项目中的应用
- Java自定义异常在项目中的应用
- 【史上最简单】android 自定义dialog中的接口回调
- android 项目级别 自定义Dialog 之 Nydialog
- android-命令模式在项目中的应用
- memcached在JAVA项目中的应用
- java线程在项目中的应用场景
- 枚举在java项目中的应用
- opencv在android项目中的应用(1)
- DOM在java项目中的实际应用(解析XML)
- java枚举在android项目应用
- java枚举在android项目应用
- java枚举在android项目应用
- java枚举在android项目应用
- Java到Android逐步理解接口回调
- 可以运用到android项目中的一些小技巧
- Dialog在android中的应用(一)
- Dialog在android中的应用(二)
- jq-Linux命令行下解析json的命令
- jQuery:validate验证方法
- Boostrap表格常用属性
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- C语言一些重难点笔记(一)
- Java到Android小项目(自定义Dialog)来理解接口回调在项目中的应用
- String a = new String(); "" null
- HDU 1789 Doing Homework again
- C++常见面试题30道
- pandas 操作csv文件
- (五)Eclipse中导入外部jar包
- JDK源码-String
- cin cout 输入输出十六进制,八进制
- 视频与图片成组切换