浅谈android回调
来源:互联网 发布:做文档的软件 编辑:程序博客网 时间:2024/06/06 03:59
安卓回调机制在很多场合会用到,比如我们用的监听都是回调接口,这里我用一个小获取头像demo来演示下回调
XML代码:
mainactivity的xml代码;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.dialogfragmentdemo.MainActivity"> <ImageView android:id="@+id/iv_icon" android:layout_width="80dp" android:layout_height="80dp" android:layout_centerInParent="true" android:scaleType="fitXY" android:src="@mipmap/ic_launcher" /></RelativeLayout>
//dialogframgent的xml代码
<!--注意背景颜色设置半透明#6000000--><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/dialog"> <TextView android:id="@+id/tv_camera" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@android:color/white" android:gravity="center" android:padding="10dp" android:text="从相机获取" android:textColor="@android:color/holo_blue_dark" android:textSize="18sp" /> <View android:id="@+id/line" android:layout_width="match_parent" android:layout_height="1px" android:layout_above="@id/tv_camera" android:background="@android:color/darker_gray" /> <TextView android:id="@+id/tv_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/line" android:background="@android:color/white" android:gravity="center" android:padding="10dp" android:text="从相册获取" android:textColor="@android:color/holo_blue_dark" android:textSize="18sp" /></RelativeLayout>
java代码
//dialogfragment代码
<!--注意背景颜色设置半透明#6000000--><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/dialog"> <TextView android:id="@+id/tv_camera" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@android:color/white" android:gravity="center" android:padding="10dp" android:text="从相机获取" android:textColor="@android:color/holo_blue_dark" android:textSize="18sp" /> <View android:id="@+id/line" android:layout_width="match_parent" android:layout_height="1px" android:layout_above="@id/tv_camera" android:background="@android:color/darker_gray" /> <TextView android:id="@+id/tv_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/line" android:background="@android:color/white" android:gravity="center" android:padding="10dp" android:text="从相册获取" android:textColor="@android:color/holo_blue_dark" android:textSize="18sp" /></RelativeLayout>
//mainactivity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener { ImageView iv_icon; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { iv_icon = (ImageView) findViewById(R.id.iv_icon); iv_icon.setOnClickListener(this); } //监听点击头像 @Override public void onClick(View v) { CustomDialogFragment dialog = new CustomDialogFragment(); //启动 // 括号参数(fragment管理员,注意你导包是上面fragment就用什么管理员,随便定义个字符串,用于区分多个dialog用) dialog.show(getFragmentManager(), "tag"); /* //第四步 通过接口所在的类点击接口对象 CustomDialogFragment.ICallBack iCallBack = new CustomDialogFragment.ICallBack() { @Override public void getImage(Uri uri) { //获取数据;接口括号参数就是结果 iv_icon.setImageURI(uri); } }; //第五步,把接口对象设置到接口定义的set方法里面 dialog.setiCallBack(iCallBack);*/ //简写通过接口所在的类的对象调用用接口的set方法;实现接口获取接口括号参数,就是结果; dialog.setiCallBack(new CustomDialogFragment.ICallBack() { @Override public void getImage(Uri uri) { iv_icon.setImageURI(uri); } }); }}
//总结回调实现
第一 在获取数据,需要把数据传递出去的类中 定义一个接口,需要传递数据就在接口里面定义一个方法括号参数就是传递的数据
//通过回调把数据传给mainActivity//第一步定义个接口(如果需要带结果回去就,在里面定义个方法括号参数就是带回去的结果)public interface ICallBack { void getImage(Uri uri);}
//第二步定义个接口对象 创建个set方法括号参数有接口private ICallBack iCallBack;public void setiCallBack(ICallBack iCallBack) { this.iCallBack = iCallBack;}
//地三步获取数据给接口方法里面的参数赋值iCallBack.getImage(uri);
//第四步 通过接口所在的类的对象调用用接口的set方法;实现接口获取接口括号参数,就是结果;dialog.setiCallBack(new CustomDialogFragment.ICallBack() { @Override public void getImage(Uri uri) { iv_icon.setImageURI(uri); }});
0 0
- 浅谈android回调
- android 浅谈
- Android 程序开发浅谈
- android Handler浅谈
- 《浅谈android进程》
- 浅谈Android Service 组件
- Android 浅谈ViewStub
- 浅谈Android WebView
- Android 浅谈相机研发
- Android - 浅谈获取时间
- 浅谈Android Service 组件
- Android系统启动过程浅谈
- 浅谈Android布局样式
- Android 浅谈ViewStub
- 浅谈android.mk
- android service浅谈
- android游戏开发浅谈
- Android 浅谈相机研发
- LDAP ,AD开发记录
- OOP的经典
- 一位软件测试工程师的跳槽帖引发的思考
- Java中文字符串截取,不能返回半个汉字
- (转载)matlab中各种范数求解norm
- 浅谈android回调
- Adminlte教程
- git安装配置,常用命令
- Error:Execution failed for task ':app:transformClassesWithDexForRelease '
- 原始数据到CT值的转换
- 使用Jmeter进行HTTP接口测试笔记
- C#使用Win7新特征 – 任务栏缩略图按钮
- adb的install与uninstall命令操作实例
- js上移下移功能