Member 14477967 Ответов: 1

Как решить исключение нулевого указателя в android?


Я создал пользовательский список, чтобы показать некоторые данные. Теперь когда я ввожу данные элементы не отображаются и мое приложение выходит из строя пожалуйста помогите мне я использовал эту ссылку для моего
Показать несколько данных из базы данных SQLite внутри ListView в android один за другим - примеры Android[^]

Что я уже пробовал:

1. Активность Леветрана:

 LeaveDb myDb;
    Button ShowApprovedStatus;
    //Declaration TextInputLayout
    TextInputLayout textInputGoingAbroad;
    TextInputLayout textInputLayoutDate;
    TextInputLayout textInputLeaveType1;
    TextInputLayout textInputLeaveType2;
    TextInputLayout textInputDays1;
    TextInputLayout textInputExpStDt;
    TextInputLayout textInputExpEndDt;
    TextInputLayout textInputReqType;
    TextInputLayout textInputStatus;
    TextInputLayout textInputSubmit;
    //Declaration EditTexts
    EditText  check_date, Days1, ExpStDt, ExpEndDt;

    
    //Declaration Spinners

      private Spinner LeaveType1, LeaveType2;
    private Spinner ReqType;
    //Declaration Checkbox
    CheckBox Status, GoingAbroad;
    private LinearLayout parentLinearLayout;
    Button onAddField, onDelete ;
<pre> @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_leave_tran);

        myDb = new LeaveDb(this);
        ShowApprovedStatus = (Button) findViewById(R.id.Submit);
        parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout);
        onAddField = (Button) findViewById(R.id.add_field_button);
        onDelete = (Button) findViewById(R.id.delete_button);




        textInputLeaveType1 = (TextInputLayout) findViewById(R.id.textInputLeaveType1);
        textInputReqType = (TextInputLayout) findViewById(R.id.textInputReqType);
        textInputLeaveType2  = (TextInputLayout) findViewById(R.id.textInputLeaveType2);
        onAddField.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                final View rowView = inflater.inflate(R.layout.field, null);
                // Add the new row before the add field button.
                parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1);
            }
        });

        onDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                parentLinearLayout.removeView((View) v.getParent());
            }
        });
        //Here i can use Start date as a 01/01/2018 and End Date is 01/01/2019
        try {
          System.out.println ("Days: " + getDaysBetweenDates("2019-05-14","2019-05-18"));

        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }

        //Cast variables over here.
        final Calendar myCalendar1 = Calendar.getInstance();



        check_date = (EditText) findViewById(R.id.check_date);
        textInputLayoutDate = (TextInputLayout) findViewById(R.id.textInputLayoutDate);
        // Code for Req Date Picker
        final DatePickerDialog.OnDateSetListener date2 = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                myCalendar1.set(Calendar.YEAR, year);
                myCalendar1.set(Calendar.MONTH, month);      // Here you can get day,month and year.
                myCalendar1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();
            }
            private void updateLabel() {
                String myFormat = "yyyy-MM-dd"; //In which you need put here
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                check_date.setText(sdf.format(myCalendar1.getTime()));

            }
        };
        check_date.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new DatePickerDialog(LeaveTran.this, date2, myCalendar1
                        .get(Calendar.YEAR), myCalendar1.get(Calendar.MONTH),
                        myCalendar1.get(Calendar.DAY_OF_MONTH)).show();

            }
        });
       // Code to retrieve Requested Date

        Days1 = (EditText) findViewById(R.id.Days1);

        textInputDays1 = (TextInputLayout)findViewById(R.id.textInputDays1);

        GoingAbroad = (CheckBox) findViewById(R.id.GoingAbroad);
        textInputGoingAbroad = (TextInputLayout)findViewById(R.id.textInputGoingAbroad);

        final Calendar startDate = Calendar.getInstance();
        textInputExpStDt = (TextInputLayout)findViewById(R.id.textInputExpStDt);
        ExpStDt = (EditText) findViewById(R.id.ExpStDt);
        // Code for ExpStDt picker
        final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener(){

            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                startDate.set(Calendar.YEAR, year);
                startDate.set(Calendar.MONTH, month);      // Here you can get day,month and year.
                startDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();
            }
            private void updateLabel() {

                String myFormat = "yyyy-MM-dd"; //In which you need put here
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                ExpStDt.setText(sdf.format(startDate.getTime()));
            }
        };
        ExpStDt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new DatePickerDialog(LeaveTran.this, date, startDate
                        .get(Calendar.YEAR), startDate.get(Calendar.MONTH),
                        startDate.get(Calendar.DAY_OF_MONTH)).show();
                String outputDate = addDays(new Date(),6 ); //for current dates
                ExpEndDt.setText(outputDate);


            }
        });
        final Calendar endDate = Calendar.getInstance();
        textInputExpEndDt = (TextInputLayout)findViewById(R.id.textInputExpEndDt);
        ExpEndDt = (EditText) findViewById(R.id.ExpEndDt);
        // Code for ExpEndDt picker
        final DatePickerDialog.OnDateSetListener date1 = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                endDate.set(Calendar.YEAR, year);
                endDate.set(Calendar.MONTH, month);       // Here you can get day,month and year.
                endDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();


            }
            private void updateLabel() {
                String myFormat = "yyyy-MM-dd"; //In which you need put here
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                ExpEndDt.setText(sdf.format(endDate.getTime()));
            }
        };
        ExpEndDt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new DatePickerDialog(LeaveTran.this, date1, endDate
                        .get(Calendar.YEAR), endDate.get(Calendar.MONTH),
                        endDate.get(Calendar.DAY_OF_MONTH)).show();

            }
        });

        Status = (CheckBox) findViewById(R.id.Status);
        textInputStatus = (TextInputLayout)findViewById(R.id.textInputStatus);
        ShowApprovedStatus();
        addItemsOnSpinner2();
        //addItemsOnSpinner1();
        addItemsOnSpinner3();

    }

    // add items into spinner dynamically
    private void addItemsOnSpinner3() {
        ReqType = (Spinner)findViewById(R.id.ReqType);
        List<String> list3 = new ArrayList<String>();
        list3.add("Need Advance Payment");
        list3.add("No Advance Payment");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list3);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ReqType.setAdapter(dataAdapter);
    }

    // add items into spinner dynamically
   /* private void addItemsOnSpinner1() {
        LeaveType2 = (Spinner) findViewById(R.id.LeaveType2);

        List<String> list2 = new ArrayList<String>();
        list2.add("Annual Leave");
        list2.add("Medical Leave Absence");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list2);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        LeaveType2.setAdapter(dataAdapter);

    }*/

    // add items into spinner dynamically
    private void addItemsOnSpinner2() {
        LeaveType1 = (Spinner)findViewById(R.id.LeaveType1);

        List<String> list = new ArrayList<String>();
        list.add("Please Select Leave Type");
        list.add("Annual Leave");
        list.add("Medical Leave Absence");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        LeaveType1.setAdapter(dataAdapter);

    }


    // Calculate days to get the end date
    private String addDays(Date startDate, int Days) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US);
        Calendar c = Calendar.getInstance();
        try {
            c.setTime(dateFormat.parse(String.valueOf(startDate)));
        } catch (android.net.ParseException e) {
            e.printStackTrace();
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }

        c.add(Calendar.DAY_OF_WEEK,Days);
        String resultDate=dateFormat.format(c.getTime());
        return resultDate;
    }


    // Code get number of days
    private long getDaysBetweenDates(String  ExpStDt, String  ExpEndDt) throws java.text.ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US);
        Date startDate, endDate;
        long Days = 0;
        try {
            startDate = dateFormat.parse(ExpStDt);
            endDate = dateFormat.parse(ExpEndDt);

            Days =  getUnitBetweenDates(startDate, endDate, TimeUnit.DAYS);
        } catch (android.net.ParseException e) {
            e.printStackTrace();
        }
        return Days;
    }

    private long getUnitBetweenDates(Date startDate, Date endDate, TimeUnit Days) {
        long timeDiff = startDate.getTime() - endDate.getTime();
        return Days.convert(timeDiff, TimeUnit.MILLISECONDS);
    }


    //Create a method for adding data
    public void ShowApprovedStatus () {

        ShowApprovedStatus.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                // Show Validation
                if (validate()){

                    // Get values from edit text fields.

                   String date = check_date.getText().toString();
                   String Leave1 = LeaveType1.getSelectedItem().toString();
                    String text = LeaveType2.getSelectedItem().toString();
                   String Day1 = Days1.getText().toString();
                   String Exp_St_Dt = ExpStDt.getText().toString();
                   String Exp_End_Dt = ExpEndDt.getText().toString();
                   String Req_Type = ReqType.getSelectedItem().toString();
                   String Status1 = Status.toString();
                }
                // Data inserted or not
                boolean isInserted = myDb.insertData(check_date.getText().toString(),ReqType.getSelectedItem().toString(),LeaveType1.getSelectedItem().toString(), LeaveType2.getSelectedItem().toString(),Days1.getText().toString(), ExpStDt.getText().toString(), ExpEndDt.getText().toString(),Status.toString(),GoingAbroad.toString());

                if (isInserted == true)
                {

                    // TODO Auto-generated method stub

                    Intent intent = new Intent(LeaveTran.this, ListViewActivity.class);
                    startActivity(intent);

                }
                else {
                    Snackbar.make(ShowApprovedStatus, "Data Not Inserted Successfully", Snackbar.LENGTH_LONG).show();
                }

            }
            // This method is used to validate input given by user
            private boolean validate() {
                boolean valid = false;
                // Get values from editText fields
                String date = check_date.getText().toString();
                String Leave1 = LeaveType1.getSelectedItem().toString();
                String text = LeaveType2.getSelectedItem().toString();
                String Day1 = Days1.getText().toString();
                String Exp_St_Dt = ExpStDt.getText().toString();
                String Exp_End_Dt = ExpEndDt.getText().toString();
                String Req_Type = ReqType.getSelectedItem().toString();
                String Status1 = Status.toString();

                // Handling validation for User Name field.

                if (date.isEmpty()){
                    textInputLayoutDate.setError("Please Enter Requested Date");

                } else {
                    valid = true;
                    textInputLayoutDate.setError(null);
                }

                if (Leave1.isEmpty()){
                    valid = false;
                    textInputLeaveType1.setError("Please Choose your Type of Leave No 1");

                } else {
                    valid = true;
                    textInputLeaveType1.setError(null);
                }
                if (text.isEmpty()){
                    valid = false;
                    textInputLeaveType2.setError("Please Choose your Type of Leave No 1");

                } else {
                    valid = true;
                    textInputLeaveType2.setError(null);
                }

                if (Day1.isEmpty()) {
                    valid = false;
                    textInputDays1.setError("Please enter the No. days for Leave Type 1");

                } else {
                    valid = true;
                    textInputDays1.setError(null);
                }
                if (Exp_St_Dt.isEmpty()) {
                    valid = false;
                    textInputExpStDt.setError("Please Enter The Expected Date Where you want to start Your leave");

                } else {

                    valid = true;
                    textInputExpStDt.setError(null);
                }
                if (Exp_End_Dt.isEmpty()) {
                    valid = false;
                    textInputExpEndDt.setError("Please Enter the Expected Date Where you want to End Your leave");

                } else {
                    valid = true;
                    textInputExpEndDt.setError(null);
                }

                if (Req_Type.isEmpty()) {
                    valid = false;
                    textInputReqType.setError("Please Select The Type of Request Leave You Want");

                } else {
                    valid = true;
                    textInputReqType.setError(null);
                }
                if (Status1.isEmpty()) {
                    valid = false;
                    textInputStatus.setError("The status should not go more than 100");

                } else {
                    valid = true;
                    textInputStatus.setError(null);
                }

                // Check validation for end date that is greater or less than start date
                SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

                try {
                    if(sdf.parse(Exp_St_Dt).before(sdf.parse(Exp_End_Dt)))
                    {
                        valid = true;//If start date is before end date
                        textInputExpStDt.setError(null);

                    }
                    else if(sdf.parse(Exp_St_Dt).equals(sdf.parse(Exp_End_Dt)))
                    {
                        valid = false;//If two dates are equal
                        textInputExpStDt.setError("The start date should not be same with end date");
                        textInputExpEndDt.setError("The End Date should not be same as Start Date");
                    }
                    else if (sdf.parse(Exp_End_Dt).before(sdf.parse(Exp_St_Dt)))
                    {
                        valid = false; //If start date is after the end date
                        textInputExpEndDt.setError("The End Date should not be less than Start Date");

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


                return valid;
            }
        });
    }

}

2. ListView.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ListViewActivity">

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" >
    </ListView>
</RelativeLayout>


3. ListViewActivity.java

LeaveDb базы данных mydb;
Ошибки ошибки;
Курсор курсор;
SQLiteListAdapter ListAdapter ;

ArrayList и Л;строка> У ReqDate_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У ReqType_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У LeaveType1_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У LeaveType2_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У Days1_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У ExpStDt_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У ExpEndDt_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У Status_ArrayList = новый ArrayList и Л;строка&ГТ;();
ArrayList и Л;строка> У GoingAbroad_ArrayList = новый ArrayList и Л;строка&ГТ;();
Элемент ListView в ListView;
@Ручная коррекция
protected void onCreate(Bundle savedInstanceState) {
супер.метод onCreate(savedInstanceState);
setContentView(R. layout.activity_list_view);

LISTVIEW = (ListView) findViewById(R. id.listView1);

myDb = new LeaveDb(это);
}
@Ручная коррекция
охраняемых недействительными onResume() {

ShowSQLiteDBdata() ;

супер.onResume();
}

private void ShowSQLiteDBdata() {
Ошибки = базы данных mydb.getWritableDatabase();
cursor = SQLITEDATABASE.rawQuery("SELECT * FROM LeaveTran", null);

ReqDate_ArrayList.clear(); // 1
ReqType_ArrayList.clear(); // 2
LeaveType1_ArrayList.clear(); // 3
LeaveType2_ArrayList.clear(); // 4
Days1_ArrayList.clear(); //5
ExpStDt_ArrayList.clear(); //6
ExpEndDt_ArrayList.clear(); //7
Status_ArrayList.clear(); //8
GoingAbroad_ArrayList.clear(); //9

если (курсор.moveToFirst()) {
делать {
ReqDate_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_ReqDate))); // 1
ReqType_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_ReqType))); // 2
LeaveType1_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_LeaveType1))); // 3
LeaveType2_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_LeaveType2))); // 4
Days1_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_Days1))); // 5
ExpStDt_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_ExpStDt))); // 6
ExpEndDt_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_ExpEndDt))); // 7
Status_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_Status))); // 8
GoingAbroad_ArrayList.добавить(курсор.метода getString(курсор.getColumnIndex(базы данных mydb.KEY_GoingAbroad))); //9

} пока (курсор.moveToNext());
}
ListAdapter = новый SQLiteListAdapter(ListViewActivity.this,
ReqDate_ArrayList, //1
ReqType_ArrayList, //2
LeaveType1_ArrayList, //3
LeaveType2_ArrayList, //4
Days1_ArrayList, //5
ExpStDt_ArrayList, //6
ExpStDt_ArrayList, //7
ExpEndDt_ArrayList, // 8
Status_ArrayList, // 9
GoingAbroad_ArrayList // 10
);
LISTVIEW.setAdapter(ListAdapter);

курсор.рядом();
}


4. listdatalayout.xml

<relativelayout
описание:андроид="http://schemas.android.com/apk/res/android" для android:layout_width="присваиваем"
="" для android:layout_height="присваиваем" для Android:paddingbottom="@Димена/activity_vertical_margin" для Android:paddingleft="@Димена/activity_horizontal_margin" для Android:paddingright="@Димена/activity_horizontal_margin" андроид:в paddingtop="@Димена/activity_vertical_margin"&ГТ;
<textview
android:id="@+id/textView1"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignparentleft="правда" для Android:layout_alignparenttop="истинный" андроид:текст="ReqDate =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewID"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+по ID/textView1" для Android:layout_alignbottom="@+по ID/textView1" для Android:layout_torightof="@+по ID/textView1" андроид:текст="ReqDate" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textView2"
="" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_below="@+id/textView1" android:text="ReqType =" android:textappearance="?android:attr/textAppearanceMedium" android:textcolor="#050505">

<textview
android:id="@+id/textViewNAME"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textViewID" для Android:layout_torightof="@+ID и/textView2" андроид:текст="ReqType" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textView3"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignparentleft="правда" для Android:layout_below="@+ID и/textView2" андроид:текст="LeaveType1 =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewPHONE_NUMBER"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbottom="@+ID и/textView3" для Android:layout_torightof="@+ID и/textView3" андроид:текст="LeaveType1" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textView4"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignparentleft="правда" для Android:layout_below="@+ID и/textView3" андроид:текст="LeaveType2 =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewSUBJECT"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView4" для Android:layout_alignbottom="@+ID и/textView4" для Android:layout_torightof="@+ID и/textView4" андроид:текст="LeaveType2" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;
<textview
android:id="@+id/textView6"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textView3" для Android:layout_alignparentleft="правда" для Android:layout_marginleft="18dp" для Android:layout_margintop="38dp" андроид:текст="дней1 =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewDays1"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView6" для Android:layout_alignbottom="@+ID и/textView6" для Android:layout_marginleft="1dp" для Android:layout_marginbottom="3DP по" андроид:layout_torightof="@+ID и/textView4" андроид:текст="дней1" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;
<textview
android:id="@+id/textView7"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textView4" для Android:layout_alignparentleft="правда" для Android:layout_marginleft="18dp" для Android:layout_margintop="38dp" андроид:текст="ExpStDt =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewExpStDt"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView7" для Android:layout_alignbottom="@+ID и/textView7" для Android:layout_marginleft="1dp" для Android:layout_marginbottom="3DP по" андроид:layout_torightof="@+ID и/textView4" андроид:текст="ExpStDt" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;
<textview
android:id="@+id/textView8"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textView6" для Android:layout_alignparentleft="правда" для Android:layout_marginleft="18dp" для Android:layout_margintop="38dp" андроид:текст="ExpEndDt =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewExpEndDt"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView8" для Android:layout_alignbottom="@+ID и/textView8" для Android:layout_marginleft="1dp" для Android:layout_marginbottom="3DP по" андроид:layout_torightof="@+ID и/textView4" андроид:текст="ExpEndDt" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textView9"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textView7" для Android:layout_alignparentleft="правда" для Android:layout_marginleft="18dp" для Android:layout_margintop="38dp" андроид:текст="состояние =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewStatus"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView9" для Android:layout_alignbottom="@+ID и/textView9" для Android:layout_marginleft="1dp" для Android:layout_marginbottom="3DP по" андроид:layout_torightof="@+ID и/textView4" андроид:текст="статус" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;
<textview
android:id="@+id/textView10"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" для Android:layout_below="@+ID и/textView8" для Android:layout_alignparentleft="правда" для Android:layout_marginleft="18dp" для Android:layout_margintop="38dp" андроид:текст="состояние =" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

<textview
android:id="@+id/textViewGoingAbroad"
="" для android:layout_width="wrap_content в качестве параметров" в android:layout_height="wrap_content в качестве параметров" андроид:layout_alignbaseline="@+ID и/textView10" для Android:layout_alignbottom="@+ID и/textView10" для Android:layout_marginleft="1dp" для Android:layout_marginbottom="3DP по" андроид:layout_torightof="@+ID и/textView4" андроид:текст="статус" для Android:textappearance="?андроид:м/textAppearanceMedium" для Android:свойства textColor="#050505"&ГТ;

Это то, что показывает в моем logcat и:
Вызванные: Java для.яз.NullPointerException: попытка вызвать виртуальный метод 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' по ссылке на нулевой объект
в com.example.huzai.listview.Ливетран.ShowApprovedStatus(LeaveTran.java:312)
в com.example.huzai.listview.LeaveTran.onCreate(LeaveTran.java:220)

David Crow

Пожалуйста, отредактируйте свой пост заново, удалив все, кроме соответствующих частей. Мы рады ответить на конкретные вопросы, предполагая, что вы потратили время на сужение проблемы, но никто в здравом уме не будет пробираться через весь ваш проект.

Кстати, вы смотрели на строку 312 из LeaveTran.java-что?

1 Ответов

Рейтинг:
1

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, который вы используете, чтобы держать ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень смешные взгляды, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего, что обычно делали бы, когда вы извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете запустить свою программу в отладчике, и когда она выйдет из строя, она покажет вам строку, на которой обнаружена проблема. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы узнать, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз он остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы можете узнать!


Member 14477967

@OriginalGriff поэтому, когда я поставил точку останова рядом с моей кнопкой.setOnclickListner, блесны давали мне нулевое значение.
Так как же мне ее решить?

OriginalGriff

Итак, теперь вы знаете, что карман рубашки пуст.
Итак, когда вы обычно кладете ручку в карман рубашки? Это случилось сегодня? Когда это должно произойти? Или с тех пор что-то случилось с ручкой или рубашкой?

Вы написали этот код: вы понимаете, как он работает, и что он должен делать. Так когда же блесны должны быть установлены на значение? Неужели это случилось? Какая ценность в них заложена? Что же произошло с тех пор?
Начните задавать эти вопросы и используйте отладчик, чтобы ответить на них. Когда вы знаете, какие значения wnet in, когда они вошли и что произошло, вы можете начать смотреть на то, почему это произошло, и, следовательно, почему у вас теперь есть нулевые значения. Мы не можем сделать это за вас - мы не можем запустить ваш код в тех же условиях, что и вы!