如何在Fragment中使用findViewById

findViewById方法却只能被用在Activity类中,如果想在fragment中使用,

需要在findViewById前面 添加getView();

下面是一段代码,

public class SquareFragment extends Fragment {
    private TextView sq;

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

        View square = inflater.inflate(R.layout.square_layout, container, false);

        sq =getView().findViewById(R.id.square);
      
        sq.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity ma = (MainActivity) getActivity();
                ma.setTabSelection(2);
            }
        });
        return square;

    }
}

这样用getView()前面没有问题,但是运行会发现空指针异常,原因呢是在使用了onCreateView创建视图, inflater插入的布局,用getView()引用,不是识别是哪一个布局

所以就报了空指针,

正确的写法如下

public class SquareFragment extends Fragment {
    private TextView sq;

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

        View square = inflater.inflate(R.layout.square_layout, container, false);

       
        sq = square.findViewById(R.id.square);
        sq.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity ma = (MainActivity) getActivity();
                ma.setTabSelection(2);
            }
        });
        return square;

    }
}

在findViewById前面添加 插入的那个布局,它就能识别是哪一个布局了。



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值