Приложение не открывается и выдаст исключение java .lang.NullPointerException в log cat, есть ли какое-то исправление? - PullRequest
0 голосов
/ 29 февраля 2020

Это выдает эту ошибку

java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.Class java .lang.Object.getClass ()' для ссылки на пустой объект в com.example.calculator.tab1.onCreateView (tab1. java: 91)

logcat показывает, что ошибка в tab1 в строке 91, которая содержит btn0=getView().findViewById(R.id.btn0);

public class tab1 extends Fragment {
    // ... Code ...
    Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnclear,btnback,btnpercent,btndiv,btnmul,btnmin,btnplus,btnequal,btndot,btn0,btnch;
    Button btnsin,btncos,btntan,btnxy,btnlg,btnin,btnbro,btnbrc,btnroot,btnnot,btndiv1,btnpi,btnsinin,btncosin,btntanin;
    TextView tvin,tvout;
    JsEvaluator jsEvaluator = new JsEvaluator(getActivity());

    String proc;
    String pro1;
    Double ans;
    FloatingActionButton fab;
    BottomSheetBehavior bottomSheetBehavior;


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

        btn0=getView().findViewById(R.id.btn0);
        btn1=getView().findViewById(R.id.btn1);
        btn2=getView().findViewById(R.id.btn2);
        btn3=getView().findViewById(R.id.btn3);
        btn4=getView().findViewById(R.id.btn4);
        btn5=getView().findViewById(R.id.btn5);
        btn6=getView().findViewById(R.id.btn6);
        btn7=getView().findViewById(R.id.btn7);
        btn8=getView().findViewById(R.id.btn8);
        btn9=getView().findViewById(R.id.btn9);
        btnback=getView().findViewById(R.id.btnback);
        btnch=getView().findViewById(R.id.btnch);
        btnclear=getView().findViewById(R.id.btnclear);
        btnpercent=getView().findViewById(R.id.btnpercent);
        btnmul=getView().findViewById(R.id.btnmul);
        btnmin=getView().findViewById(R.id.btnmin);
        btnplus=getView().findViewById(R.id.btnpus);
        btndot=getView().findViewById(R.id.btndot);
        btndiv=getView().findViewById(R.id.btndiv);
        btnequal=getView().findViewById(R.id.btneql);
        tvin=getView().findViewById(R.id.textView2);
        tvout=getView().findViewById(R.id.textView);
        btnsin=getView().findViewById(R.id.btnsin);
        btncos=getView().findViewById(R.id.btncos);
        btntan=getView().findViewById(R.id.btntan);
        btnxy=getView().findViewById(R.id.btnxy);
        btnlg=getView().findViewById(R.id.btnlg);
        btnroot=getView().findViewById(R.id.btnroot);
        btnnot=getView().findViewById(R.id.btnnot);
        btndiv1=getView().findViewById(R.id.btn1by);
        btnpi=getView().findViewById(R.id.btnpi);
        btnsinin=getView().findViewById(R.id.btnsinin);
        btncosin=getView().findViewById(R.id.btncosin);
        btntanin=getView().findViewById(R.id.btntanin);
        View bttm =getView().findViewById(R.id.btoom);
        bottomSheetBehavior =BottomSheetBehavior.from(bttm);
        fab=getView().findViewById(R.id.floating_action_button);

        btnbrc=getView().findViewById(R.id.btnbrc);
        btnbro=getView().findViewById(R.id.btnbro);
        btnin=getView().findViewById(R.id.btnin);



        // ... Event listener code ...

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_tab1, container, false);
    }
}

Я новичок в студии android, и было бы здорово, если бы вы могли помочь

1 Ответ

2 голосов
/ 29 февраля 2020

Сначала необходимо создать иерархию представлений, а затем запросить представления. Итак, метод onCreateView должен выглядеть так:

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


  View v = inflater.inflate(R.layout.fragment_tab1, container, false);

  btn0 = v.findViewById(R.id.btn0);     /// use created View here
  btn1 = v.findViewById(R.id.btn1);

  // and so on...


  // return created view
  return v;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...