Android

[Android] EditText Null Pointer Exception

준토리73 2023. 3. 17. 18:04

🚫 Error Message 

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

자꾸 null 오류가 난다. 🤣

 

💡 방법1. onCreateView에다가 구현하기  

onCreate vs onCreateView 

onCreate에 썼을 때 nullPointer 오류가 났던게 onCreateView에다가 해주니까 오류가 안난다. 

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_packing, container, false);


        txt_CustNm = (TextView) v.findViewById(R.id.txt_CustNm);
        txt_delvCustNm = (TextView) v.findViewById(R.id.txt_delvCustNm);

        // 뒤로가기 버튼
        buttonBack = (ImageButton) v.findViewById(R.id.btn_back);
        buttonBack.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                eventListener.onBack();
            }
        });

        // 포장하기 버튼
        btnPacking = (Button) v.findViewById(R.id.btnPacking);
        btnPacking.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {

				eventListener.onPackingProcess();

            }
        });


        lv = (ListView) v.findViewById(R.id.prdtList);
        editTextSearch = (EditText) v.findViewById(R.id.editTextSearch);
        // editTextSearch.requestFocus();

        sAdaptor = eventListener.Search();
        if (sAdaptor != null) {
            lv.setAdapter(sAdaptor);
        }
        else {
            lv.setAdapter(null);
            showToast("조회할 자료가 없습니다.");
        }

 // editText null check
        editTextSearch = (EditText) v.findViewById(R.id.editTextSearch);
//        if( editTextSearch.equals(""))
//            return v;

//        editTextSearch.setOnKeyListener(new View.OnKeyListener(){
//            @Override
//            public boolean onKey(View v, int keyCode, KeyEvent event) {
//                 String sOtKey = editTextSearch.getText().toString();
//                if ((event.getAction() == KeyEvent.ACTION_UP) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
//                    SimpleAdapter sAdaptor = eventListener.Search(sOtKey);
//                    if (sAdaptor != null) {
//                        lv.setAdapter(sAdaptor);
//                        editTextSearch.setText("");
//                    } else {
//                        lv.setAdapter(null);
//                        showToast("조회할 자료가 없습니다.");
//                    }
//
//                    //}
//                    return true;
//                }
//                return false;
//            }
//
//        });
        lv.setOnItemClickListener(new ListView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View arg1, int position, long id) {
                HashMap<String, String> select = (HashMap<String, String>) adapterView.getAdapter().getItem(position);

                String arg = select.get("TAG");
                idx[0] = arg.toString();
                // 셀클릭하면 그정보 불러오기
                eventListener.goSerialRegDialog(idx[0]);

            }
        });


        return v;

    }

근데 일부 editSearch event Listener는 createView 에 써줬더니 또 다시 null 오류가 난다. 

(주석친 부분이 오류나는 부분..) 

 

 

 

💡 방법2. null check 해주는 코드 추가 

if( editTextSearch.equals(""))
     return v;

 

내 코드에서는 여전히 오류가 나는데, 아직 원인 못 찾는중 🤣