0

최근 holoeverywhere를 사용하여 무언가를하고 있지만, 이제 마지막 탭에 도달 한 후 오른쪽으로 계속 슬라이드하면 프로그램이 첫 번째 탭의보기를로드하지만 더 이상 탭이 없으므로 프로그램 추락 할 것이다. 문제는 다음에 설명되어 있으며 실제로 도움이 필요한 사람이 필요합니다. 여러분 덕분에! Holoeverywhere 탭은 마지막 탭 위로 슬라이드 할 때 첫 번째 탭을로드합니까?

다음

내 코드입니다 :

public static class TabFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     TextView textView = new TextView(getSupportActivity()); 
     textView.setText("Position: " + getArguments().getInt("position")); 
     return textView; 
    } 
} 

private static Bundle make(int i) { 
     Bundle bundle = new Bundle(); 
     bundle.putInt("position", i); 
     return bundle; 
    } 

@Override 
protected void onHandleTabs() { 
    getSupportActionBar().removeAllTabs(); 
    for(int i = 0; i < 5; i++) 
     addTab("Tab #" + i, TabFragment.class, make(i + 1)); 
} 

문제는 내가 마지막 탭 이후 밀어 때, 뷰가이 같은 것입니다 :

enter image description here

및 프로그램과 충돌합니다 다음 오류 :

05-05 21:33:26.258: E/AndroidRuntime(1573): FATAL EXCEPTION: main 
05-05 21:33:26.258: E/AndroidRuntime(1573): java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at java.util.ArrayList.get(ArrayList.java:304) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.app.ActionBarImpl.getTabAt(ActionBarImpl.java:989) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.actionbarsherlock.internal.app.ActionBarWrapper.getTabAt(ActionBarWrapper.java:425) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at org.holoeverywhere.app.TabSwipeActivity.dispatchTabSelected(TabSwipeActivity.java:135) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at org.holoeverywhere.app.TabSwipeActivity.access$2(TabSwipeActivity.java:128) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at org.holoeverywhere.app.TabSwipeActivity$TabSwipeAdapter.onPageSelected(TabSwipeActivity.java:67) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:538) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:523) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:1943) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.View.dispatchTouchEvent(View.java:5486) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1714) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1892) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.app.Activity.dispatchTouchEvent(Activity.java:2364) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1840) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.View.dispatchPointerEvent(View.java:5662) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2863) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.os.Looper.loop(Looper.java:137) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-05 21:33:26.258: E/AndroidRuntime(1573):  at dalvik.system.NativeStart.main(Native Method) 

및 som 전자 맞춤 설정 :

getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.****,null)); 
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.abs__home); 
((View) homeIcon.getParent()).setVisibility(View.GONE); 

이 :

getSupportActionBar().setDisplayUseLogoEnabled(false); 
getSupportActionBar().setDisplayShowCustomEnabled(true); 

다음은 데모의 코드와 난 그냥 이해가 안 돼요. 내가 마지막 탭에 도달 한 후 오른쪽 측면 때 데모에서, 프로그램은 다음과 같이 화면의 오른쪽에 뭔가를 보여줄 것이다 :

enter image description here

이러한 데모의 코드입니다 :

public static class TabFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     Log.d("DemoTabsActivity", "test" + getArguments().getInt("position")); 
     TextView textView = new TextView(getSupportActivity()); 
     textView.setText("Position: " + getArguments().getInt("position")); 
     return textView; 
    } 
} 

private static Bundle make(int i) { 
    Bundle bundle = new Bundle(); 
    bundle.putInt("position", i); 
    return bundle; 
} 

@Override 
protected void onHandleTabs() { 
    getSupportActionBar().removeAllTabs(); 
    for(int i = 0; i < 10; i++) 
     addTab("Tab #" + i, TabFragment.class, make(i + 1)); 
    Log.d("TAG", "getSupportActionBar().getTabCount()" + getSupportActionBar().getTabCount()); 
} 

답변

0
java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5 

코드에서 어딘가에 네 개의 요소 만있는 배열의 다섯 번째 요소를 액세스/수정하려고합니다.

+0

위의 데모 코드를 업데이트했는데 차이점을 거의 찾을 수 없습니다. –

+0

오류와 문제가 동일하므로 최소한 오류를 찾을 위치를 알 수 있습니다. –

+0

그게 쉽지 않은 것 같습니다. –