0

Can someone help me? I really need help to solve my Android Studio application.

I test my project on SmartPhone and when i want to insert data to database the Logcat on Android Studio says

2022-11-06 03:48:34.113 22617-23221/com.example.golf E/Volley: [36334] NetworkDispatcher.processRequest: Unhandled exception java.lang.IllegalArgumentException: Request#getParams() or Request#getPostParams() returned a map containing a null key or value: (id, null). All keys and values must be non-null.
    java.lang.IllegalArgumentException: Request#getParams() or Request#getPostParams() returned a map containing a null key or value: (id, null). All keys and values must be non-null.
        at com.android.volley.Request.encodeParameters(Request.java:494)
        at com.android.volley.Request.getBody(Request.java:482)
        at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:283)
        at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:257)
        at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:89)
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:104)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)

Here is the code

package com.example.golf;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.toolbox.StringRequest;
import com.example.golf.config.Config;
import com.example.golf.controller.AppController;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;

public class AddBookingActivity extends AppCompatActivity {

    //Deklarasi
    String TAG = AddBookingActivity.class.getSimpleName();
    String id = "";
    String action = "";
    String username;

    EditText etNamaPenyewa;
    EditText etNomorKontak;
    EditText etTanggalSewa;
    EditText etJamMulai;
    EditText etJamSelesai;
    EditText etLamaSewa;
    EditText etTotalSewa;

    Button btnSelesaiBooking;
    Button btnAddBooking;
    Button btnEditBooking;
    Button btnDeleteBooking;
    Button btnBackBooking;
    Button btnHitung;

    Bundle bundle;

    TimePickerDialog timePickerDialog;
    Calendar calendar1;
    int currHour;
    int currMinute;


    DatePickerDialog.OnDateSetListener setListener;
    private ProgressDialog pDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_booking);

        etNamaPenyewa = findViewById(R.id.etNamaPenyewa);
        etNomorKontak = findViewById(R.id.etNomorKontak);
        etTanggalSewa = findViewById(R.id.etTanggalSewa);
        etJamMulai = findViewById(R.id.etJamMulai);
        etJamSelesai = findViewById(R.id.etJamSelesai);
        etLamaSewa = findViewById(R.id.etLamaSewa);

        etTanggalSewa.setInputType(InputType.TYPE_NULL);
        etJamMulai.setInputType(InputType.TYPE_NULL);
        etJamSelesai.setInputType(InputType.TYPE_NULL);

        etTotalSewa = findViewById(R.id.etTotalSewa);

        btnSelesaiBooking = findViewById(R.id.btnSelesaiBooking);
        btnAddBooking = findViewById(R.id.btnAddBooking);
        btnEditBooking = findViewById(R.id.btnEditBooking);
        btnDeleteBooking = findViewById(R.id.btnDeleteBooking);
        btnBackBooking = findViewById(R.id.btnBackBooking);
        btnHitung = findViewById(R.id.btnHitung);

        Calendar calendar = Calendar.getInstance();
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);

        String strNamaPenyewa = etNamaPenyewa.getText().toString();
        String strNoKontak = etNomorKontak.getText().toString();
        String strTanggalSewa = etTanggalSewa.getText().toString();
        String strJamMulai = etJamMulai.getText().toString();
        String strJamSelesai = etJamSelesai.getText().toString();
        String strLamaSewa = etLamaSewa.getText().toString();
        String strTotalSewa = etTotalSewa.getText().toString();


        etTanggalSewa.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePickerDialog datePickerDialog = new DatePickerDialog(
                        AddBookingActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker v, int year, int month, int day) {
                        month = month + 1;
                        String date = day + "/" + month + "/" + year;
                        etTanggalSewa.setText(date);
                    }
                }, year, month, day);
                datePickerDialog.show();
            }
        });

        etJamMulai.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                calendar1 = Calendar.getInstance();
                currHour = calendar1.get(Calendar.HOUR_OF_DAY);
                currMinute = calendar1.get(Calendar.MINUTE);

                timePickerDialog = new TimePickerDialog(AddBookingActivity.this,
                        new TimePickerDialog.OnTimeSetListener() {
                            @Override
                            public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                                etJamMulai.setText(hourOfDay + ":" + minute);
                            }
                        }, currHour, currMinute, true);
                timePickerDialog.show();
            }
        });

        etJamSelesai.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                calendar1 = Calendar.getInstance();
                currHour = calendar1.get(Calendar.HOUR_OF_DAY);
                currMinute = calendar1.get(Calendar.MINUTE);

                timePickerDialog = new TimePickerDialog(AddBookingActivity.this,
                        new TimePickerDialog.OnTimeSetListener() {
                            @Override
                            public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                                etJamSelesai.setText(hourOfDay + ":" + minute);
                            }
                        }, currHour, currMinute, true);
                timePickerDialog.show();
            }
        });

        bundle = getIntent().getExtras();
        if (bundle != null) {
            id = bundle.getString("id");
            username = bundle.getString("username");

            if (username.equals("admingita")) {
                etNamaPenyewa.setText(bundle.getString("namaPenyewa"));
                etNomorKontak.setText(bundle.getString("noKontak"));
                etTanggalSewa.setText(bundle.getString("tanggalSewa"));
                etJamMulai.setText(bundle.getString("jamMulai"));
                etJamSelesai.setText(bundle.getString("jamSelesai"));
                etLamaSewa.setText(bundle.getString("lamaSewa"));
                etTotalSewa.setText(bundle.getString("totalSewa"));

                btnAddBooking.setVisibility(View.GONE);
            } else {
                etNamaPenyewa.setText(bundle.getString("namaPenyewa"));
                etNomorKontak.setText(bundle.getString("noKontak"));
                etTanggalSewa.setText(bundle.getString("tanggalSewa"));
                etJamMulai.setText(bundle.getString("jamMulai"));
                etJamSelesai.setText(bundle.getString("jamSelesai"));
                etLamaSewa.setText(bundle.getString("lamaSewa"));
                etTotalSewa.setText(bundle.getString("totalSewa"));

                btnAddBooking.setVisibility(View.VISIBLE);
                btnSelesaiBooking.setVisibility(View.GONE);
                btnEditBooking.setVisibility(View.GONE);
                btnDeleteBooking.setVisibility(View.GONE);
            }

            btnHitung.setOnClickListener( v -> {
                String lmSewa = etLamaSewa.getText().toString();

                double lm = Double.parseDouble(lmSewa);
                double totalBiaya = Total(lm);
                etTotalSewa.setText(String.valueOf(totalBiaya));
            });
        } //else if (bundle!=null && strNamaPenyewa.matches("") && strNoKontak.matches("") &&
                //strTanggalSewa.matches("") && strJamMulai.matches("") && strJamSelesai.matches("") &&
                //strLamaSewa.matches("") && strTotalSewa.matches("")){
            //btnAddBooking.setVisibility(View.VISIBLE);
        //}

        pDialog = new ProgressDialog(this);
        pDialog.setMessage("Loading");
        pDialog.setCancelable(false);

        btnSelesaiBooking.setOnClickListener(v -> {
            action = "SelesaiBooking";
            kirimdata();
        });

        btnAddBooking.setOnClickListener(v -> {
            action = "addBooking";
            kirimdata();
        });

        btnEditBooking.setOnClickListener(v -> {
            action = "editBooking";
            kirimdata();
        });

        btnDeleteBooking.setOnClickListener(v -> {
            action = "deleteBooking";
            kirimdata();
        });

        btnBackBooking.setOnClickListener(v -> {
            Intent intent = new Intent(AddBookingActivity.this, LapanganActivity.class);
            intent.putExtra("username", username);
            finish();
            startActivity(intent);
        });
    }

    private double Total(double lamaSewa){
        return 10000 * lamaSewa;
    }


    //private void showTimeDialog(EditText etJamMulai) {
        //final Calendar calendar = Calendar.getInstance();

        //TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
            //@Override
            //public void onTimeSet(TimePicker timePicker, int hourOfday, int minute) {
                //calendar.set(Calendar.HOUR_OF_DAY, hourOfday);
                //calendar.set(Calendar.MINUTE, minute);

                //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");

                //etJamMulai.setText(simpleDateFormat.format(calendar));
            //}
        //};

        //new TimePickerDialog(AddBookingActivity.this, timeSetListener,
                //calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false).show();
    //}

    //private void showDateDialog(EditText etTanggalSewa) {
        //final Calendar calendar = Calendar.getInstance();
        //DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
            //@Override
            //public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
                //calendar.set(Calendar.YEAR, year);
                //calendar.set(Calendar.MONTH, month);
                //calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");

                //etTanggalSewa.setText(simpleDateFormat.format(calendar));
            //}
        //};

        //new DatePickerDialog(AddBookingActivity.this, dateSetListener,
                //calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
    //}

    private void showProgressDialog() {
        if (!pDialog.isShowing())
            pDialog.show();
    }

    private void hideProgressDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();
    }

    private void kirimdata() {
        Log.d(TAG, "kirimdata called ");
        showProgressDialog();
        StringRequest strReq = new StringRequest(Request.Method.POST, Config.senddataLapangan, response -> {
            hideProgressDialog();
            Toast.makeText(AddBookingActivity.this, response, Toast.LENGTH_SHORT).show();
            etNamaPenyewa.setText(null);
            etNomorKontak.setText(null);
            etTanggalSewa.setText(null);
            etJamMulai.setText(null);
            etJamSelesai.setText(null);
            etLamaSewa.setText(null);

            etTotalSewa.setText(null);
        }, error -> {
            Log.d(TAG, "error disini cekk: " + error.getMessage());
            hideProgressDialog();
        }){
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();

                params.put("id", id);
                params.put("namaPenyewa", String.valueOf(etNamaPenyewa.getText()));
                params.put("noKontak", String.valueOf(etNomorKontak.getText()));
                params.put("tanggalSewa", String.valueOf(etTanggalSewa.getText()));
                params.put("jamMulai", String.valueOf(etJamMulai.getText()));
                params.put("jamSelesai", String.valueOf(etJamSelesai.getText()));
                params.put("lamaSewa", String.valueOf(etLamaSewa.getText()));
                params.put("totalSewa", String.valueOf(etTotalSewa.getText()));
                params.put("action", action);

                return params;
            }
        };
        AppController.getInstance(getApplicationContext()).addToRequestQueue(strReq);
    }
}

I really need help to solve my error, thankyou

I already make the id on database table to AUTO_INCREMENT and delete the code:

params.put("id", id); 

in HashMap it works to insert the data, but when i can't delete the data.

Andry
  • 1

0 Answers0