Normally, it operates normally. However, when you press the button quickly and switch the screen in 0.1 second, it may close. It seems that an error has occurred by switching the screen while loading the character in DB. (I use android studio - php - mySQL)
When you change the screen quickly, the close point is setTextColor.
// Since the timetable is up to 13th grade, i <14;
for(int i = 0; i<14; i++)
{
// if the value in the current array is not empty
if(!this.monday[i].equals(""))
{
// In this way, the contents of the array will be populated in a text view named 'monday'.
monday[i].setText(this.monday[i]);
// The color of the text changes when the lecture is present.
monday[i].setTextColor(context.getResources().getColor(R.color.colorPrimaryDark));
}
else
{
// If it is blank, it adjusts the table size according to maxString.
monday[i].setText(maxString);
}
}
And the code that causes the error together is the point where Android connects with DB. This place does not cause any problems at all. (If you press the button slowly)
class BackgroundTask extends AsyncTask<Void, Void, String>
{
String target;
@Override
protected void onPreExecute() {
try
{
target = "http://MyHomepageID.cafe24.com/ScheduleList.php?userID=" + URLEncoder.encode(MainActivity. userID, "UTF-8"); //해당 웹 서버에 접속
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(target);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp;
StringBuilder stringBuilder = new StringBuilder();
while ((temp=bufferedReader.readLine()) != null)
{
stringBuilder.append(temp + "\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public void onProgressUpdate(Void... values) {
super.onProgressUpdate();
}
@Override
public void onPostExecute(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("response");
int count = 0;
String courseProfessor;
String courseTime;
String courseTitle;
int courseID;
while (count < jsonArray.length())
{
JSONObject object = jsonArray.getJSONObject(count);
courseID = object.getInt("courseID");
courseProfessor = object.getString("courseProfessor");
courseTime = object.getString("courseTime");
courseTitle = object.getString("courseTitle");
schedule.addSchedule(courseTime, courseTitle, courseProfessor);
count++;
}
} catch (Exception e) {
e.printStackTrace();
}
schedule.setting(monday, tuesday, wednesday, thursday, friday, getContext());
}
}
The two codes that appear blue in the error log are listed above.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.aaaaa.registeration, PID: 12358
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at com.example.aaaaa.registeration.Schedule.setting(Schedule.java:685)
at com.example.aaaaa.registeration.ScheduleFragment$BackgroundTask.onPostExecute(ScheduleFragment.java:258)
at com.example.aaaaa.registeration.ScheduleFragment$BackgroundTask.onPostExecute(ScheduleFragment.java:159)
at android.os.AsyncTask.finish(AsyncTask.java:667)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Application terminated.
summary of the questions:
Normally works normally. (android - php - mysql)
However, if I switch the screen by pressing the another button in 0.1 seconds, the screen is changed before the value is loaded from the DB, and it is closed.
How do I resolve this?