如何在一个碎片中访问UI元素?

5

我有一个带有控件(TextView)的片段,其ID为R.id.currentCycleIndicator,我想在片段内部以编程方式设置其值。

但是,

  • getActivity().findViewById(R.id.currentCycleIndicator)
  • getView().findViewById(R.id.currentCycleIndicator)

都会返回null。

我该如何在片段代码中引用该TextView?

3个回答

13

尝试在Fragment的onCreateView()回调函数中获取其值,如下所示:

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

    View view = inflater.inflate(R.layout.fragment_layout, container, false);

    TextView textView = (TextView) view.findViewById(R.id.currentCycleIndicator);

    return view;
}

1
我知道我又重新打开了一个非常旧的线程,但是如果我必须从其他活动访问textView,该怎么办?如何获取当前活动fragment的对象? - Ali_Waris

1
您可以通过以下方式重写onViewCreated函数来实现:
private TextView tv;

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    tv = (TextView) view.findViewById(R.id.currentCycleIndicator);
}

1
onCreateView中展开您的视图,并从那里引用您的TextView。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.layoutwheretextviewis, container, false);

            TextView text= (TextView) view.findViewById(R.id.currentCycleIndicator);
            return view;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接