2015-09-17 31 views
2

我不能在我的應用程序中訪問最後一個片段(案例7)。我一直在調試它,我認爲這是一個邏輯錯誤,但我很難解決它。在當我點擊我的最後一個片段時出現錯誤

public void onSectionAttached(int number) { 
    String[] stringArray = getResources().getStringArray(R.array.section_titles); 
    if (number >= 1) { 
     mTitle = stringArray[number-1]; 
    } 
} 

所以這裏的部分是由在Android Studio中的默認導航抽屜導出我的代碼部分:

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    // update the main content by replacing fragments 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    switch(position+1){ 
     case 1: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickReserveSeat.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 2: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickCancelSeat.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 3: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickMyTrips.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 4: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickUserAccount.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 5: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickLogout.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 6: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickHelp.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
     case 7: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickAboutUs.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 
    } 
} 

public void onSectionAttached(int number) { 
    String[] stringArray = getResources().getStringArray(R.array.section_titles); 
    if (number >= 1) { 
     mTitle = stringArray[number-1]; 
    } 
} 

onClickAboutUs(最後一個片段類/方法)

public class onClickAboutUs extends Fragment { 
private static final String ARG_SECTION_NUMBER = "section_number"; 

public static onClickAboutUs newInstance(int sectionNumber) { 
    onClickAboutUs fragment = new onClickAboutUs(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
    fragment.setArguments(args); 
    return fragment; 
} 
public onClickAboutUs() { 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_about_us, container, 
      false); 

    return rootView; 
} 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    ((UserAccount) activity).onSectionAttached(getArguments().getInt(
      ARG_SECTION_NUMBER)); 
} 

}

編輯:(logcat)

java.lang.ArrayIndexOutOfBoundsException: length=6; index=6 
     at com.oop.admin.reserbus.UserAccount.onSectionAttached(UserAccount.java:120) 
     at com.oop.admin.reserbus.onClickAboutUs.onAttach(onClickAboutUs.java:37) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:907) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 
     at android.os.Handler.handleCallback(Handler.java:725) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:176) 
     at android.app.ActivityThread.main(ActivityThread.java:5317) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
     at dalvik.system.NativeStart.main(Native Method) 
+1

什麼錯誤......貼logcat的.. –

+0

您可以張貼anything.newInstance的代碼(位置+ 1)你在哪裏調用onSessionAttached方法 –

+0

部分沿檢查了另一個片段的標題是否被正確反映?對於你的片段7你的錯誤在onSessionAttachedMethod bcoz數字可能是8檢查打印日誌那裏檢查? –

回答

0

你可以試試這個

 int pos = position+1; 

     switch(pos){ 
     case 1: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, onClickReserveSeat.newInstance(position + 1)).addToBackStack("tag") 
        .commit(); 
      break; 

... 
} 
+0

沒有運氣。仍然有同樣的錯誤。 – JanGorospe

+0

你在哪裏調用onSectionAttached方法?我認爲它裏面有錯誤 –

+0

在編輯的文章中也是如此。 onSectionAttached中的邏輯,並在最後一個片段類中調用onAttach方法。 – JanGorospe

相關問題