2013-05-19 4 views
1

가 여기에 작동하는 레이아웃입니다안드로이드 레이아웃의 위치에 따라 충돌합니다

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    pager = (ViewPager) findViewById(R.id.pager); 

    adapter = new MyPagerAdapter(getSupportFragmentManager()); 

    pager.setAdapter(adapter); 

    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
    tabs.setViewPager(pager); 
    tabs.setDividerColor(Color.BLUE); 
    tabs.setBackgroundColor(Color.DKGRAY); 
    tabs.setTextColor(Color.WHITE); 
    tabs.setIndicatorColor(Color.GREEN); 

} 

레이아웃에 나는 PagerSlidingTabStrip를 반전 경우 및 ViewPager, 프로젝트는 시작시 충돌이 발생하지만 첫 번째 구현에서는 정상적으로 작동합니다.

05-19 16:50:11.636: E/AndroidRuntime(305): FATAL EXCEPTION: main 
05-19 16:50:11.636: E/AndroidRuntime(305): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hsware.peeem/com.hsware.peeem.MainActivity}: java.lang.ClassCastException: android.support.v4.view.ViewPager 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.os.Looper.loop(Looper.java:123) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-19 16:50:11.636: E/AndroidRuntime(305): at java.lang.reflect.Method.invokeNative(Native Method) 
05-19 16:50:11.636: E/AndroidRuntime(305): at java.lang.reflect.Method.invoke(Method.java:521) 
05-19 16:50:11.636: E/AndroidRuntime(305): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-19 16:50:11.636: E/AndroidRuntime(305): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-19 16:50:11.636: E/AndroidRuntime(305): at dalvik.system.NativeStart.main(Native Method) 
05-19 16:50:11.636: E/AndroidRuntime(305): Caused by: java.lang.ClassCastException: android.support.v4.view.ViewPager 
05-19 16:50:11.636: E/AndroidRuntime(305): at com.hsware.peeem.MainActivity.onCreate(MainActivity.java:41) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-19 16:50:11.636: E/AndroidRuntime(305): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

잘 모르겠어요, 드 R.id.pager를 검색 할 수 없습니다 나타납니다 :

다음은 오류입니다.

+0

활동에서 페이저 가져 오기를 확인하십시오. – Blackbelt

+1

위치를 바꾼 후에 청소 -> 프로젝트를 재구성 해 보았습니까? 어리 석고, 나도 알아,하지만 나는 작은 위치 변경이 컴파일러에 의해 집어 들지 않는 것을 알아 챘다. –

+0

@Sam_D : 분명히 그 것이었다! 답변을 작성하십시오. 동의하겠습니다 ... – TheSquad

답변

2

작은 순서 변경을 수행 할 때 컴파일러가 선택하지 않는 것으로 나타났습니다. findViewById가 실제로 R.id.pager, 또는보다 정확하게 - R.id.pager가 올바른 뷰를 참조하고 있지 않은 잘못된 뷰를 실제로 돌려주기 때문에 ClassCastException이 발생합니다.

이 문제를 해결하는 방법은 프로젝트를 정리하고 다시 빌드하는 것입니다.

2

당신이 포함하고 있지 않습니다. ViewPager에는 두 가지 정의가 있습니다. 하나는 android.support.v4.view.ViewPager에 있고 다른 하나는 android.view.ViewPager에 있습니다. 나는 당신이 당신의 코드에 잘못된 것을 포함 시켰을 것입니다.

+0

그것은 내가 사용하고있는 support.v4입니다. Android SDK에 혼동을 표시하기 위해 +1 – TheSquad

관련 문제