android - Activity中通过Fragment的对象调用其方法时,无法将数据设置进入Fragment

查看:195
本文介绍了android - Activity中通过Fragment的对象调用其方法时,无法将数据设置进入Fragment的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我在一个Activity中包含了一个Fragment,在new的时候Activity保存了该Fragment的引用。然后再必要的时候,通过这个引用调用Fragment的函数。
这个写在Fragment中的函数是这个样子的:

    public void setOptions(StudyPlanCustomActivity.StudyPlanOptions options) {
        log = "fuck the Android Studio";
        modelMap = new HashMap<>();
        modelMap.put("career", options.careerArray);
        modelMap.put("education", options.educationArray);
        modelMap.put("reviewDegree", options.reviewDegreeArray);
        modelMap.put("examTimes", options.examTimesArray);
    }

然而,在之后我想使用这个Fragment的成员变量时,它居然是空的,而且上面那个名为logString,也成空的了,这是为什么?难道Activity不能通过Fragment的引用直接调用它的方法么?

刚才又试了一试,感觉用Fragment的引用调用Fragment的方法完全没有任何用处,方法能走到,但是根本不能改变Fragment的内部成员变量?为什么会是这样,那Activity需要如何改变Fragment的成员变量呢?

我找到原因了,我之前写的用来测试的代码一直没有删除,浪费了那么多时间。
谢谢你们给我的提示(有可能是Fragment重新创建了),解决了现在。

解决方案

  1. Activity是可以直接引用Fragment的。

  2. 你的那种调用方法是可以改变Fragment的成员变量的。更好的方式是写接口Activity与Fragment通讯

  3. 你出现log为空有2个可能:一是Activity或Fragment回收重新创建了,之前改变的属性没有恢复,相关技术点可以查看Activity数据恢复;二是你先后改变和打印日志的Fragment是两个引用。

  4. 建议贴更多的代码方便查看问题。

这篇关于android - Activity中通过Fragment的对象调用其方法时,无法将数据设置进入Fragment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆