пытается разобрать извлеченный XML-файл из одного класса в другой - PullRequest
0 голосов
/ 21 ноября 2018

я использую андроид студию для школьного проекта и сейчас на финальной стадии.единственное, что я оставил, это для одного класса, который имеет 2 счетчика, один определяет программу, а другой определяет семестр, и кнопку, которая затем возьмет эти два счетчика и выдаст URL, относящийся к расписанию этой программы, исеместр.Проблема в том, что я не знаю, как тогда взять этот выплевывающий URL-адрес и разобрать его в другой класс Java, который отображает расписание.Ниже вы найдете прикрепленный код, который работает, но не отображает правильное расписание (поскольку оно жестко задано)

   StringBuffer sb = new StringBuffer();
                sb.append("http://branko-cirovic.appspot.com/etcapp/timetables/timetable_"); sb.append(cid); sb.append(semester); sb.append(".xml");
                loc = sb.toString();

                Toast.makeText(ScheduleMainActivity.this,"You Selected : "
                        + loc, Toast.LENGTH_SHORT).show();

                Intent toy7 = new Intent(ScheduleMainActivity.this, TimetableMainActivity.class);
                toy7.putExtra("Name", loc);
                startActivity(toy7);

Это действие, при котором я создаю намерение и использую putExtra для использования данных в следующемактивность

 public class GetXML extends AsyncTask<String, Void, String> {
    String src = null;
    String loc = (String) getIntent().getExtras().get("Name");

    @Override
    protected String doInBackground(String... params) {
        try {
            URL url = new URL(loc);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            src = readStream(con.getInputStream());

        } catch (Exception e) {
            e.printStackTrace();
        }

        return src;
    }

    @Override
    protected void onPostExecute(String result) {
        if (src == null)
            new AlertDialog.Builder(TimetableMainActivity.this).
                    setTitle("Error").setMessage("No Schedule Found").
                    setNeutralButton("Close", null).show();
        else {
            parseXML(src);
        }

        setContentView(R.layout.activity_main_timetable);

        days = new String[5][10];
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 10; j++) {
                int k = i * 10 + j;
                days[i][j] = schedule.get(k);
            }
        }

        for (int i = 0; i < 5; i++)
            list[i] = new ArrayList<Map<String, String>>();

        int count = hours.length;

        for (int j = 0; j < 5; j++) {
            for (int i = 0; i < count; i++) {
                map = new HashMap<String, String>();
                map.put("time", hours[i]);
                map.put("description", days[j][i]);
                list[j].add(map);
            }
        }

        Calendar cal = Calendar.getInstance();
        int today = cal.get(Calendar.DAY_OF_WEEK) - 2;

        pos = 0;
        if (today >= 0 && today <= 4)
            pos = today;

        ViewPager viewPager = findViewById(R.id.ViewPager);
        CustomPagerAdapter adapter = new CustomPagerAdapter(TimetableMainActivity.this, list);
        PagerTabStrip pagerTabStrip = findViewById(R.id.pager_tab);

        int color = Color.parseColor("#33b7ee");
        pagerTabStrip.setTabIndicatorColor(color);

        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(pos);
    }

Вот где я получаю сообщение об ошибке.Я получаю сообщение об ошибке IndexOut of bounds, и приложение вылетает

2018-11-20 22:35:19.126 20681-20681/com.example.mr_ru.listview E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mr_ru.listview, PID: 20681
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.get(ArrayList.java:437)
    at com.example.mr_ru.listview.TimetableMainActivity$GetXML.onPostExecute(TimetableMainActivity.java:100)
    at com.example.mr_ru.listview.TimetableMainActivity$GetXML.onPostExecute(TimetableMainActivity.java:66)
    at android.os.AsyncTask.finish(AsyncTask.java:695)
    at android.os.AsyncTask.access$600(AsyncTask.java:180)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Это ошибка btw

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...