gpt4 book ai didi

安卓 SetTextColor 错误 : Screen switching during mySQL call

转载 作者:行者123 更新时间:2023-11-29 05:05:54 28 4
gpt4 key购买 nike

<分区>

正常情况下,正常运行。但是,当您快速按下按钮并在 0.1 秒内切换屏幕时,它可能会关闭。似乎在DB中加载角色时切换屏幕发生了错误。 (我使用 android studio - php - mySQL)

enter image description here


快速切换屏幕时,关闭点是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);
}
}

和一起报错的代码就是Android连接DB的那个点。这个地方根本不会造成任何问题。 (如果你慢慢按下按钮)

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());
}
}

上面列出了错误日志中显示为蓝色的两个代码。

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.

问题总结:

  1. 正常工作。 (android - php - mysql)

  2. 但是,如果我在 0.1 秒内按下另一个按钮来切换屏幕,则屏幕会在从数据库加载值之前发生更改,然后关闭。

  3. 我该如何解决?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com