2015-07-28 19 views
5

Tôi đang cố gắng thiết lập các tab như Google Play, tôi đang theo dõi this guide và chuyển đổi thành C#, nhưng ngoại lệ được ném khi gọi tabLayout.SetupWithViewPager. Mã cho hoạt động này là thế này:Xamarin Android TabLayout gọi SetupWithViewPager ném ngoại lệ

public class MainActivity : FragmentActivity 
{ 
    protected override void OnCreate(Bundle bundle) { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 

     var viewPager = FindViewById<ViewPager>(Resource.Id.viewpager); 
     viewPager.Adapter = new SampleFragmentPagerAdapter(SupportFragmentManager, this); 

     var tabLayout = FindViewById<TabLayout>(Resource.Id.sliding_tabs); 
     tabLayout.SetupWithViewPager(viewPager); 
    } 
} 

các stacktrace cho ngoại lệ là:

07-28 23:08:39.068 I/MonoDroid(4040): UNHANDLED EXCEPTION: 
07-28 23:08:39.071 I/MonoDroid(4040): Android.Views.InflateException: Exception of type 'Android.Views.InflateException' was thrown. 
07-28 23:08:39.071 I/MonoDroid(4040): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() <IL 0x00011, 0x0004b> 
07-28 23:08:39.071 I/MonoDroid(4040): at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue*) [0x00063] in /Users/builder/data/lanes/1879/5f55a9ef/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:571 
07-28 23:08:39.071 I/MonoDroid(4040): at Android.Support.Design.Widget.TabLayout.SetupWithViewPager (Android.Support.V4.View.ViewPager) <IL 0x00066, 0x001c3> 
07-28 23:08:39.071 I/MonoDroid(4040): at TabTest.MainActivity.OnCreate (Android.OS.Bundle) [0x00040] in E:\VS Projects\TabTest\TabTest\MainActivity.cs:28 
07-28 23:08:39.071 I/MonoDroid(4040): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/1879/5f55a9ef/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.App.Activity.cs:2707 
07-28 23:08:39.071 I/MonoDroid(4040): at (wrapper dynamic-method) object.1f96a184-9cb6-4d05-8516-4c4d2e85d8d7 (intptr,intptr,intptr) <IL 0x00017, 0x00027> 
07-28 23:08:39.071 I/MonoDroid(4040): --- End of managed exception stack trace --- 
07-28 23:08:39.071 I/MonoDroid(4040): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true 
07-28 23:08:39.071 I/MonoDroid(4040): at android.view.LayoutInflater.inflate(LayoutInflater.java:475) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout$TabView.update(TabLayout.java:1196) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1112) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.createTabView(TabLayout.java:612) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.addTabView(TabLayout.java:646) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.addTab(TabLayout.java:345) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.addTab(TabLayout.java:320) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:601) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:575) 
07-28 23:08:39.071 I/MonoDroid(4040): at md5be39043e4dbb7988fedb01f9386df4d7.MainActivity.n_onCreate(Native Method) 
07-28 23:08:39.071 I/MonoDroid(4040): at md5be39043e4dbb7988fedb01f9386df4d7.MainActivity.onCreate(MainActivity.java:28) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.Activity.performCreate(Activity.java:5990) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.ActivityThread.access$800(ActivityThread.java:151) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.os.Handler.dispatchMessage(Handler.java:102) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.os.Looper.loop(Looper.java:135) 
07-28 23:08:39.071 I/MonoDroid(4040): at android.app.ActivityThread.main(ActivityThread.java:5254) 
07-28 23:08:39.071 I/MonoDroid(4040): at java.lang.reflect.Method.invoke(Native Method) 
07-28 23:08:39.071 I/MonoDroid(4040): at java.lang.reflect.Method.invoke(Method.java:372) 
07-28 23:08:39.071 I/MonoDroid(4040): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
07-28 23:08:39.071 I/MonoDroid(4040): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

tôi không sử dụng bất cứ nơi nào <merge /> vì vậy tôi đoán rằng đó là nội bộ đến một trong các điều khiển? Tôi đoán rằng đây chỉ là một vấn đề với Xamarin Android (hoặc tôi đã thực hiện một sai lầm ở đâu đó) như có vẻ là một số triển khai Java rất giống nhau mà tôi giả định công việc ok!

Tôi đã tải mẫu đầy đủ lên GitHub.

+0

mẫu của bạn trên GitHub, sau khi thay đổi dòng 36 trong PageFragment.cs để làm cho nó xây dựng trong VS2013, xây dựng và chạy tốt ở đây. – Cheesebaron

+0

Cảm ơn @Cheesebaron, chỉ cần thử nó sau khi xóa sạch các thư mục bin và obj và nó hoạt động tốt ở đây bây giờ là tốt. – ChrisWay

+0

OK, rất vui khi biết nó đã hoạt động cho bạn. Nếu bạn cần một mẫu hoàn chỉnh hơn cho các công cụ thiết kế mới, thanh công cụ, vv Hãy xem https://github.com/xamarin/monodroid-samples/tree/master/android5.0/Cheesesquare – Cheesebaron

Trả lời

34

Lỗi bit ảo sau khi xóa thư mục bin và obj giờ nó hoạt động như mong đợi.

+3

CẢM ƠN để đề cập đến điều này. Tôi đã đi xuống chính xác cùng một hành vi và không có stacktrace của bạn tôi có lẽ sẽ không bao giờ tìm thấy điều này! –

+1

Bạn đã dành cho tôi rất nhiều thời gian, cảm ơn bạn – Escobar5

+1

Bạn đã tiết kiệm thời gian cho tôi .. cảm ơn bạn .. –

1

Tôi có cùng một vấn đề đối với bao phấn lý do, vấn đề này có thể được nâng cao nếu bạn bao gồm bất kỳ đoạn lồng nhau không thực hiện onCreateview()

vì vậy nếu bạn bao gồm đoạn lồng vào bên trong ViewPager của bạn chắc chắn rằng tất cả họ đều thực hiện trong đúng cách

hy vọng điều này truyền cảm hứng cho bất kỳ một khuôn mặt cùng một vấn đề

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