2014-10-24 2 views
21

내 조각에 switchcompat를 사용하려고합니다. 최소 지원 API는 14이고 최대 값은 21입니다. 전 롤리팝 안드로이드 버전을 전환하기 위해 재질보기를 적용하려고합니다. 그러나 아래의 코드를 사용할 때 오류가 발생합니다 : 어떻게 수정합니까?SwitchCompat throwing error

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

참조 : http://android-developers.blogspot.in/2014/10/appcompat-v21-material-design-for-pre.html

예외 :

10-24 14:15:15.880 1561-1561/com.stackoverflow.ranjith.androidprojdel E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.stackoverflow.ranjith.androidprojdel, PID: 1561 
java.lang.NullPointerException 
     at android.text.Layout.getDesiredWidth(Layout.java:67) 
     at android.support.v7.widget.SwitchCompat.makeLayout(SwitchCompat.java:570) 
     at android.support.v7.widget.SwitchCompat.onMeasure(SwitchCompat.java:495) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
     at android.view.Choreographer.doFrame(Choreographer.java:544) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     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:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

Build.gradle :

,617,451 예외 던지고 자바 코드 팽창

<android.support.v7.widget.SwitchCompat 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

dependencies { 
    compile 'com.android.support:cardview-v7:+' 
    compile 'com.android.support:recyclerview-v7:+' 
    compile 'com.android.support:palette-v7:+' 
    compile 'com.android.support:support-v4:+' 
    compile "com.android.support:appcompat-v7:21.0.+" 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 
+0

(당신이 당신의 XML 파일의 상단에 xmlns:app="http://schemas.android.com/apk/res-auto"을 가정) 귀하의 전체 R.layout.fragment_scheduler_ui'는 단지'SwitchCompat'입니까? 어떤 상황이 도움이 될 수 있습니다. – ianhanniballake

+0

버튼과 editext가 있습니다. 레이아웃 파일에 switchCompat를 추가 한 후에 만 ​​문제가 발생했습니다. – Psypher

답변

50

SwitchCompat 당신이 app:showText="false" 설정하지 않는 한 당신은 android:textOnandroid:textOff 값을 설정해야합니다 :`

<android.support.v7.widget.SwitchCompat 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="ON" 
    android:textOff="OFF" /> 

또는

<android.support.v7.widget.SwitchCompat 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:showText="false" /> 
+1

감사합니다 .... 이제는 예외가 발생하지는 않지만 스위치가 표시되지 않습니다. – Psypher

+0

다른 모든 문제와 비슷합니다. 생성하는 것이 좋습니다. 귀하의 전체 레이아웃에 대한 새로운 질문과 여기에 링크를 게시 – ianhanniballake

+0

또 다른 질문을 만들었습니다 : http://stackoverflow.com/questions/26563986/switchcompat-not-displaying-the-switch – Psypher

관련 문제