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.