java - 无法在 Fragment 内的 onResume() 方法中检索 View

标签 java android android-fragments android-lifecycle

我的 fragment 中有一个方法,我想从 onResume() 调用它。不幸的是,我的方法要求我向它传递一个 View ,该 View 在 onCreateView() 中定义:

onResume():

    @Override
    public void onResume() {
        super.onResume();

        retrieveData(0, false, rootView);
    }

onCreateView():

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        // Set view
        View rootView = inflater.inflate(R.layout.tab_fragment_1, container, false);
    ...
    }

是否有办法像 onResume() 中那样调用我的retrieveData 方法,或者我应该创建一个不带 rootView 参数的新方法(不理想)?

无法将其移至全局范围,因为 inflater 方法参数是 fragment 接口(interface)的一部分。

最佳答案

您只能从 fragment 中获取 View ,而不能从 Activity 中获取 View 。为此,请在您的 fragment 中 onCreateView

将 Root View 保存为实例变量,例如

private View root;

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        root = inflater.inflate(R.layout.fragment_details_buddy, container, false);
... }

并在您的onResume中调用它

编辑:要从 Activity 获取数据,请将其传递到 Bundle 中。 Doc

关于java - 无法在 Fragment 内的 onResume() 方法中检索 View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040867/

相关文章:

android - 如何在文本中插入绘图

java - 后退按钮工作时操作栏主页按钮崩溃

java - getActivity().findViewById(R.id.myId) 返回 Null

android - 这是以编程方式调用 fragment 的正确方法吗?

javascript - Java:Javascript 函数不会在 Wicket 按钮的 onclick 事件上触发

android - AsyncTask 从不执行 doInBackground(但在调试时执行)(更新 : Fixed)

java - Apache solr 配置与 tomcat 6.0

Android espresso 在同一个 Activity 中连续测试多个 fragment

java - 将java包导入Android

java - rss Rome 创建带有 <内容 :encoded/> tag 的条目