Не удалось исправить исключение в Looper.java

У меня есть приложение, созданное для аудита отелей. Это метод в нем. Этот метод предназначен для сохранения ответов, которые аудитор вводит при использовании приложения. Метод:

  private void loopQuestions(ViewGroup parent) {

        JSONArray ansArry = new JSONArray();
        JSONObject params;
        String inspectedDate = inspctDate, InspectedBy = "" ;

        try {

            //loop1
            Log.e("Total Child", parent.getChildCount() + "");
            for (int i = 0; i < parent.getChildCount(); i++) {
                View child = parent.getChildAt(i);
                String header =""; 
                if (child instanceof LinearLayout) {
                    //Support for linearlayout
                    ViewGroup llchild = (LinearLayout) child;


                    //loop 2
                    for (int j = 0; j < llchild.getChildCount(); j++) {
                        View subChild = llchild.getChildAt(j);


                        params = new JSONObject();
                        if (subChild instanceof EditText) {
                            nosOfQustion++;
                            EditText edtText = (EditText) subChild;


                            if (edtText.getTag().toString().equalsIgnoreCase("Inspected By")) {
                                InspectedBy = getText(edtText.getText().toString().trim());
                            } else {
                                params.put("Question", getText(edtText.getTag().toString()));
                                params.put("Answer", getText(edtText.getText().toString()));
                                params.put("Category", header);
                                ansArry.put(params);
                            }
                        } else if (subChild instanceof Spinner) {
                            nosOfQustion++;
                            Spinner spr = (Spinner) subChild;


                                params.put("Question", getText(spr.getTag().toString()));
                                params.put("Answer", getText(spr.getSelectedItem().toString()));
                                params.put("Category", header);
                                ansArry.put(params);

                        } else if (subChild instanceof RadioButton) {
                            String answer="";

                            if (rg.getCheckedRadioButtonId()==edtId_1)
                            {answer= "Yes";}

                            else if (rg.getCheckedRadioButtonId()==edtId_2)
                            {answer="No";}

                            params.put("Question", getText(rg.getTag().toString()));
                            params.put("Answer", answer);
                            params.put("Category", header);
                            ansArry.put(params);
                        }

                        else if (subChild instanceof RatingBar) {


                            params.put("Question", getText(ratingBar.getTag().toString()));
                            params.put("Answer", ratingBar.getRating());
                            params.put("Category", header);
                            ansArry.put(params);
                        }

                    }//end inner for loop


                    }
                }


                if (isNewAudit) {
                    cal = Calendar.getInstance();
                    day = cal.get(Calendar.DAY_OF_MONTH);
                    month = cal.get(Calendar.MONTH);
                    year = cal.get(Calendar.YEAR);


                    Log.e("auditId", auditId);


                    if (!PropertySelectionPage.selectedCity.equalsIgnoreCase("------Other Cities------")) {
                        if (!InspectedBy.equalsIgnoreCase("")) {
                            System.out.println("JsonObj " + ansArry.toString());


                            datasource.insertAudit(auditId, InspectedBy, inspectedDate, PropertySelectionPage.selectedCity,PropertySelectionPage.selectedProperty, ansArry.toString(), 0, PropertySelectionPage.propAddress.contains("'") ? PropertySelectionPage.propAddress.replace("'", "") : PropertySelectionPage.propAddress, PropertySelectionPage.pID);
                            Log.e("NosOfQuestion", nosOfQustion + "");


                            Intent intent = new Intent(getActivity(), MainActivity.class);
                            startActivity(intent);
                            getActivity().finish();
                        } else {
                            Toast.makeText(getActivity(), "Please enter Inspected By", Toast.LENGTH_SHORT).show();
                        }
                    } else {
                        Toast.makeText(getActivity(), "Please select city", Toast.LENGTH_SHORT).show();
                    }

                } else {
                    Log.e("else auditId", auditId);
                    datasource.deleteAudit(auditId);

                    System.out.println("JsonObj " + ansArry.toString());
                    if (!PropertySelectionPage.selectedCity.equalsIgnoreCase("------Other Cities------")) {
                        if (!InspectedBy.equalsIgnoreCase("")) {


                            datasource.insertAudit(auditId, InspectedBy, inspectedDate, PropertySelectionPage.selectedCity, PropertySelectionPage.selectedProperty, ansArry.toString(), 0, PropertySelectionPage.propAddress, PropertySelectionPage.pID);
                            Log.e(" else NosOfQuestion", nosOfQustion + "");

                            Intent intent = new Intent(getActivity(), MainActivity.class);
                            startActivity(intent);
                            getActivity().finish();
                        } else {
                            Toast.makeText(getActivity(), "Please enter Inspected By", Toast.LENGTH_SHORT).show();
                        }
                    } else {
                        Toast.makeText(getActivity(), "Please select city", Toast.LENGTH_SHORT).show();
                    }
                }


            } catch(JSONException e){
                e.printStackTrace();
            }

        }

Называется как:

public void saveAnswers() {
    loopQuestions(layer1);
}

Когда я пытаюсь выполнить отладку, отладчик перенаправляет меня на Looper.java. Вроде много ошибок.

Это ошибки в моем логарифме:

Совершенно очевидно, что editText.getTag() возвращает нулевое значение. Следовательно, вы должны проверить свои данные, быстрое исправление, чтобы избежать сбоя:


person user7735493    schedule 21.03.2018    source источник
comment
Информация о стеке ясно показывает, что NullPointerException находится в Tab1.java:666, так в чем же проблема?   -  person ADM    schedule 21.03.2018
comment
Какой код строки: 666 в файле Tab1.java?   -  person Qian Sijianhao    schedule 21.03.2018
comment
ваш edittext имеет значение null, когда вы вызываете тег, кажется (edtText.getTag().toString()); Возможно, одно из ваших условий не выполнено и оно не было инициализировано.   -  person Cao Minh Vu    schedule 21.03.2018
comment
@Cao: код в строке 666: if (edtText.getTag().toString().equalsIgnoreCase(Inspected By)){   -  person Rainmaker    schedule 21.03.2018
comment
Большое спасибо за ответ. Но «перерыв» вместо «возврата» сработал за меня :)   -  person user7735493    schedule 21.03.2018


Ответы (1)


Возможный дубликат Что такое исключение NullPointerException и как его исправить?

if(edtText.getTag() == null) return;
if (edtText.getTag().toString().equalsIgnoreCase("Inspected By")){
person Cao Minh Vu    schedule 21.03.2018
comment
Идея состоит в том, чтобы проверить null перед использованием. Вы должны проверить свои данные, а не использовать быстрое исправление, это может привести к некоторым непредсказуемым ошибкам. - person user7735493; 21.03.2018
comment
Не стесняйтесь отмечать это как ответ, если это решило вашу проблему :) - person Cao Minh Vu; 21.03.2018
comment
Да, это мое удовольствие! - person Cao Minh Vu; 21.03.2018
comment
java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String java.lang.Object.toString()' для нулевой ссылки на объект в com.csr.audit.Tab1.loopQuestions(Tab1.java:666) в com.csr.audit.Tab1.saveAnswers(Tab1.java:623) в com.csr.audit.Tab1.onOptionsItemSelected(Tab1.java:1018) в android.support.v4.app.Fragment.performOptionsItemSelected(Fragment.java: 2473) в android.support.v4.app.FragmentManagerImpl.dispatchOptionsItemSelected(FragmentManager.java:3350) в android.support.v4.app.FragmentController.dispatchOptionsItemSelected(FragmentC ontroller.java:347) в android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:413) в android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195) в android.support.v7 .view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108) в android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108) в android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java: 63) в android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:203) на android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780) на android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822) на android.support.v7.view .menu.MenuItemImpl.invoke(MenuItemImpl.java:171) в android.support.v7.view.menu. MenuBuilder.performItemAction(MenuBuilder.java:973) в android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:963) в android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624) в android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:150) в android.view.View.performClick(View.java:6294) в android.view.View$PerformClick.run(View.java :24770) в android.os.Handler.handleCallback(Handler.java:790) в android.os.Handler.dispatchMes sage(Handler.java:99) в android.os.Looper.loop(Looper.java:164) в android.app.ActivityThread.main(ActivityThread.java:6494) в java.lang.reflect.Method.invoke(Native Метод) в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) - person user7735493; 21.03.2018