2014-10-24 17 views
21

Tôi đang cố gắng sử dụng switchcompat trong đoạn của mình. API hỗ trợ tối thiểu là 14 và tối đa là 21. Tôi đang cố gắng áp dụng chế độ xem tài liệu để chuyển đổi cho tất cả các phiên bản Android trước kẹo que. Nhưng khi sử dụng mã bên dưới, tôi gặp lỗi: Tôi có thể sửa nó bằng cách nào?Lỗi báo chí SwitchCompat

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

Lạm phát trong mã java được ném ngoại lệ:

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

tham khảo: http://android-developers.blogspot.in/2014/10/appcompat-v21-material-design-for-pre.html

Ngoại lệ:

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:

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

của bạn toàn bộ ' R.layout.fragment_scheduler_ui' chỉ là 'SwitchCompat'? Một số ngữ cảnh có thể hữu ích. – ianhanniballake

+0

Nó có các nút và editext. Tôi gặp sự cố chỉ sau khi tôi thêm switchCompat vào tệp bố cục – Psypher

Trả lời

50

SwitchCompat yêu cầu bạn thiết lập các giá trị android:textOnandroid:textOff trừ khi bạn đặt app:showText="false":

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

hoặc (giả sử bạn có xmlns:app="http://schemas.android.com/apk/res-auto" ở phía trên cùng của tập tin XML của bạn)

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

Cảm ơn .... Bây giờ tôi không nhận được ngoại lệ nhưng chuyển đổi không được hiển thị ... – Psypher

+0

Điều đó nghe như một vấn đề khác: Tôi khuyên bạn nên tạo một câu hỏi mới với toàn bộ bố cục của bạn và đăng liên kết tại đây – ianhanniballake

+0

Tạo một câu hỏi khác: http://stackoverflow.com/questions/26563986/switchcompat-not-displaying-the-switch – Psypher

Các vấn đề liên quan