我不太确定我要去哪里哪里,是否声明了错误,我无法在此处找到问题所在。
MainActivity.java
public class New_Appointment extends AppCompatActivity {
String username, password, user_type, spl, slt, hs, he, ss;
Spinner specialization, slot;
int hsi, hei, tmp;
DatabaseHelper dbh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_appointment);
Bundle bb = getIntent().getExtras();
if (bb != null) {
username = bb.getString("username");
password = bb.getString("password");
user_type = bb.getString("user_type");
}
specialization = (Spinner) findViewById(R.id.spinner_specialization);
slot = (Spinner) findViewById(R.id.spinner_slot);
List<String> s_slot = new ArrayList<>();
s_slot.add("Morning (9-12)");
s_slot.add("Afternoon (1-4)");
s_slot.add("Evening (5-9)");
ArrayAdapter<String> adapter_slot = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, s_slot);
adapter_slot.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
slot.setAdapter(adapter_slot);
}
public void onClick(View view) {
Bundle b = new Bundle();
b.putString("username", username);
b.putString("password", password);
b.putString("user_type", user_type);
switch (view.getId()) {
case R.id.b_refresh:
slt = slot.getSelectedItem().toString();
int r1, r2;
//SELECTING RANGE FOR SLOT
if (slt.charAt(0) == 'M') {
r1 = 9;
r2 = 12;
} else if (slt.charAt(0) == 'A') {
r1 = 13;
r2 = 16;
} else {
r1 = 17;
r2 = 21;
}
dbh = new DatabaseHelper(this);
Cursor y = dbh.checkduplicates_in_user_credentials("", "", getResources().getString(R.string.all_doctor_slots));
if (y!=null && y.moveToFirst()) {
List<String> s_specialization = new ArrayList<>();
Set<String> set_s = new HashSet<>();
// CHECK SLOT
if (y.getString(5).equals("Y")) {
hs = y.getString(3);
hsi = ((int) hs.charAt(0) - (int) '0') * 10;
Pointing ERROR ---> hsi += ((int) hs.charAt(1) - (int) '0');
he = y.getString(4);
hei = ((int) he.charAt(0) - (int) '0') * 10;
hei += ((int) he.charAt(1) - (int) '0');
if ((r1 <= hsi && r2 >= hsi) || (r1 <= hei && r2 >= hei)) {
ss = y.getString(2);
for (int i = 0; i < ss.length(); i++) {
if (ss.charAt(i) == '_') {
if (i + 1 < ss.length()) {
String ad = "";
for (int j = i + 1; j < ss.length(); j++) {
if (ss.charAt(j) == '_') {
i = j - 1;
break;
}
ad += ss.charAt(j);
}
if (ad.length() != 0)
set_s.add(ad);
}
}
}
}
}
if (!y.isLast()) {
y.moveToNext();
while (true) {
hs = y.getString(3);
hsi = ((int) hs.charAt(0) - (int) '0') * 10;
hsi += ((int) hs.charAt(1) - (int) '0');
he = y.getString(4);
hei = ((int) he.charAt(0) - (int) '0') * 10;
hei += ((int) he.charAt(1) - (int) '0');
if ((r1 <= hsi && r2 >= hsi) || (r1 <= hei && r2 >= hei)) {
ss = y.getString(2);
for (int i = 0; i < ss.length(); i++) {
if (ss.charAt(i) == '_') {
if (i + 1 < ss.length()) {
String ad = "";
for (int j = i + 1; j < ss.length(); j++) {
if (ss.charAt(j) == '_') {
i = j - 1;
break;
}
ad += ss.charAt(j);
}
if (ad.length() != 0)
set_s.add(ad);
}
}
}
}
if (y.isLast())
break;
y.moveToNext();
}
}
Iterator iterator = set_s.iterator();
while (iterator.hasNext()) {
s_specialization.add(String.valueOf(iterator.next()));
}
Message.message(New_Appointment.this, String.valueOf(s_specialization.size() + " specializations found"));
ArrayAdapter<String> adapter_spl = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, s_specialization);
adapter_spl.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
specialization.setAdapter(adapter_spl);
} else {
Message.message(New_Appointment.this, "Sorry no slots available");
}
break;
case R.id.b_search :
slt = slot.getSelectedItem().toString();
spl = specialization.getSelectedItem().toString();
b.putString("specialization", spl);
b.putString("slot", slt);
Intent i = new Intent(New_Appointment.this, Select_Doctor.class);
i.putExtras(b);
startActivity(i);
break;
}
}
}
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.StringIndexOutOfBoundsException: length=1; index=1
at java.lang.String.charAt(Native Method)
at com.hospital.appointment_booking.InstaCure.Patient.New_Appointment.onClick(New_Appointment.java:96)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
一旦我单击计划,它就会崩溃。II正在尝试从患者那里访问可用的医生插槽,并且一搜索,它就会抛出此错误。即使我进行更改,它也显示相同的错误。 / p>