-2

無法爲什麼在運行中產生這個錯誤是要弄清楚獲得FATAL運行時錯誤:從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)  

我已經試過「所致」的特點遵循,但仍無法理出頭緒。以下是我的主要活動 - 講師活動。

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

所有在你的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