-2

Невозможно понять, почему эта ошибка производится во время выполнения:Получение фатальная ошибка во время выполнения из LogCat

04-19 18:39:06.310 1741-1741/com.example.aaaaaj.studybuddy3 E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.aaaaaj.studybuddy3, PID: 1741 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.uuj.benstudybuddy3/com.example.uuj.benstudybuddy3.LecturerActivity}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                       at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:136) 
                       at android.app.ActivityThread.main(ActivityThread.java:5001) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:515) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 
                       at com.example.uuj.benstudybuddy3.LecturerActivity.onCreate(LecturerActivity.java:31) 
                       at android.app.Activity.performCreate(Activity.java:5231) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  
                       at android.app.ActivityThread.access$800(ActivityThread.java:135)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:136)  
                       at android.app.ActivityThread.main(ActivityThread.java:5001)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:515)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)  
                       at dalvik.system.NativeStart.main(Native Method)  

Я пытался следовать «Вызванный» функций, но все еще не в состоянии понять вещи. Ниже приводится моя основная деятельность - LecturerActivity.

package com.example.aaaaaj.studybuddy3; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 

import java.util.ArrayList; 

public class LecturerActivity extends AppCompatActivity { 

    RecyclerView recyclerView; 
    RecyclerView.Adapter adapter; 
    RecyclerView.LayoutManager layoutManager; 
    ArrayList<Contact> list = new ArrayList<Contact>(); 
    int[] image_id = {R.drawable.usericon}; 
    String [] name, email, room; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_lecturer); 
     name = getResources().getStringArray(R.array.Lecturer_Name); 
     email = getResources().getStringArray(R.array.Email_Address); 
     room = getResources().getStringArray(R.array.Room); 

     int count = 0; 
     for (String Name : name) 

     { 
      Contact contact = new Contact(image_id[count],Name,email[count],room[count]); 
      count++; 
      list.add(contact); 
     } 

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 
     recyclerView.setHasFixedSize(true); 
     adapter = new ContactAdapter(list); 
     recyclerView.setAdapter(adapter); 

    } 
} 

Я был бы очень признателен, если кто-то может дать мне точку в правильном направлении по этому вопросу - невероятно сложно! И я знаю, наверное, что-то очень простое.

<resources> 
<string name="app_name">StudyBuddy3</string> 

<string name="hello_world">Hello world!</string> 
<string name="action_settings">Settings</string> 
<string name="title_activity_lecturer">LecturerActivity</string> 

<string-array name="Lecturer_Name"> 

    <item>"Dr. Toby Flenderson"</item> 
    <item>"Dr. Michael Scott"</item> 
    <item>"Dr. Dwight Schrute "</item> 
    <item>"Dr. Jim Halpert"</item> 

</string-array> 

<string-array name="Email_Address"> 

    <item>"[email protected]"</item> 
    <item>"[email protected]"</item> 
    <item>"[email protected]"</item> 
    <item>"[email protected]"</item> 

</string-array> 

<string-array name="Room"> 

    <item>"16J14"</item> 
    <item>"16J12"</item> 
    <item>"16J15"</item> 
    <item>"16J16"</item> 

</string-array> 

+0

Если 'длина = 1', то вы получаете индекс вне границ, когда' подсчитывать = 1', поскольку массивы нулевой индексируются. –

ответ

0

Вопрос заключается в том, что у вас есть 3 различных массивов с разным числом элементов, но вы работаете цикл только для name длины массива, и это приводит к тому, ArrayIndexOutOfBoundsException, как и другие 2 массивов или один из другого 2 массива имеют меньшее количество элементов, чем массив name.

name = getResources().getStringArray(R.array.Lecturer_Name); 
    email = getResources().getStringArray(R.array.Email_Address); 
    room = getResources().getStringArray(R.array.Room); 

Все 3 объявленные массивы в вашем XML должны иметь одинаковое число элементов, чтобы сделать ваш код работать. Иными словами, вы должны изменить свою логику.

Теперь, когда вы разместили свой массив xml, ясно, что все длины массива одинаковы. Проблемы с этой линией -

Contact contact = new Contact(image_id[count],Name,email[count],room[count]); 

, потому что, как и в

int[] image_id = {R.drawable.usericon}; 

есть только один пункт в image_id, но вы пытаетесь получить доступ неправильного индекса. Вы можете изменить ваш image_id содержит 4 элемента, как и другие массивы или изменения в цикле -

Contact contact = new Contact(image_id[0],Name,email[count],room[count]); 
+0

Так что нужно внести изменения в файл Strings.xml или файл activity_lecture.xml? Извините, очень смущен. Что вы подразумеваете под элементами? Элементы – CaliforniaDreaming

+0

означают элементы массива. В вашем массиве xml убедитесь, что у вас одинаковое количество элементов в каждом массиве. –

+0

Я редактировал сообщение, чтобы показать свой файл string.xml, и он показывает, что у меня одинаковое количество элементов в каждом массиве. – CaliforniaDreaming