如教程5-3

如教程5-3

http://img1.sycdn.imooc.com/climg//5962e28e00019e8f08620288.jpg

如截图部分,看了5遍都没看懂,第一:在onClick()中这个mIButton的写法上网查了资料都没见过这种写法,用匿名内部类的方式好像也不是这么写的。第二:在onAttach()中,我知道用于Fragment关联到Activity后的参数传递,也知道可以强转,我看了好久就是不知道强转的意义是什么,能说再的详细点吗?第三:用setArgument的方式比这个简单多,我知道可以降低耦合性,但在什么情况下用接口回调更好。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答
@Override
public void onAttach(Context context) {
   super.onAttach(context);
   try {
     mIButton = (IButton) context;
   } catch (Exception e) {
     e.printStackTrace();
   }
}
@Override
public void onClick(View v) {
   mIButton.onFragmentBtnClick(((Button) v).getText().toString());
}

上面onFragmentBtnClick()方法中传进的就是String,之所以可以这样操作,是因为mIButton是IButton类型,IButton是自定义接口。由于是用回调,所以要先定义一个接口如下:

public interface IButton {

    void onFragmentBtnClick(String text);

}

IButton接口是给activity用的,所以要在activity中给这里的接口变量赋值(代码即mIButton = (IButton) context),这里最好的处理办法就是我们要强制用户赋值。所以采用强转的方式,在fragment与activity相关联时,进行强转赋值。接下来就是在FragmentValues3中当在用户点击的时候,将结果回传给Activity了。

总结接口回调操作步骤:

1)定义接口

2)接口变量赋值

3)调用接口变量

4)在Activity中实现接口

优势,在不同界面中回传结果,回调是最好的解决方案。

  • 慕婉清9984016 提问者 #1
    如果一个类实现了多个接口,那么这个类可以强转成其中的一个接口吗
    2017-07-11 09:31:16
  • 好帮手慕雪 回复 提问者 慕婉清9984016 #2
    是的,可以转换的
    2017-07-11 09:38:18
  • irista23 回复 提问者 慕婉清9984016 #3
    可以,强转后只能调用转换的接口中的方法。
    2017-07-11 09:41:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师