android – 为什么我们像getActivity()一样访问.findViewById()

当一个布局,它为Fragment定义并在setContentView()方法中使用并且它与Activity没有关系.

那么为什么我们需要Activity Reference来访问它.

所以我想在Fragment中创建一个ListView.我必须在Activity布局内或Fragment布局内创建它.

嘿Neil,我有一个问题,因为我每次犯错都是因为,我正在表演

TextView txt = ( TextView ) getActivity().findViewById(R.id.txt);
txt.setText("nayak nahi , khalnayak hun mein");

在oncreateView()里面所以它创建了问题,但是当我在里面实现这个时
onActivityCreated(),它正在工作,所以你能告诉我为什么会这样.

最佳答案 您可以在Fragment的布局中定义ListView.在片段中尝试这样的东西来定义替代布局

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
         Bundle savedInstanceState) {
    _baseView = inflater.inflate(R.layout.yourlayout, null); //where base view is your upper most parent in your layout
    return _baseView;
}

然后在onActivityCreated中,您可以使用_baseView.findViewById(‘yourListView’)来设置ListView.我不知道这是不是最好的做法,但它对我来说非常有效.

点赞