C# Xamarin Android TabLayout调用设置WithViewPager引发异常

C# Xamarin Android TabLayout调用设置WithViewPager引发异常,c#,android,xamarin.android,C#,Android,Xamarin.android,我正在尝试设置像Google Play这样的选项卡,我正在跟踪并转换为C#,但调用tabLayout.SetupWithViewPager时引发异常。该活动的代码如下所示: public class MainActivity : FragmentActivity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource

我正在尝试设置像Google Play这样的选项卡,我正在跟踪并转换为C#,但调用
tabLayout.SetupWithViewPager
时引发异常。该活动的代码如下所示:

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);
    }
}
公共类主活动:碎片活动
{
创建时受保护的覆盖无效(捆绑包){
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
var viewPager=findviewbyd(Resource.Id.viewPager);
viewPager.Adapter=新的SampleFragmentPagerAdapter(SupportFragmentManager,此);
var tabLayout=findviewbyd(Resource.Id.tabs);
tabLayout.SetupWithViewPager(viewPager);
}
}
异常的堆栈跟踪是:

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)
07-28 23:08:39.068 I/MonoDroid(4040):未处理的异常:
07-28 23:08:39.071 I/MonoDroid(4040):引发了Android.Views.InflateException:类型为“Android.Views.InflateException”的异常。
07-28 23:08:39.071 I/MonoDroid(4040):在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
07-28 23:08:39.071 I/MonoDroid(4040):在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):位于Android.Support.Design.Widget.TabLayout.SetupWithViewPager(Android.Support.V4.View.ViewPager)
07-28 23:08:39.071 I/MonoDroid(4040):在E:\VS Projects\TabTest\TabTest\MainActivity.cs:28中的TabTest.MainActivity.OnCreate(Android.OS.Bundle)[0x00040]
07-28 23:08:39.071 I/MonoDroid(4040):在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/Android-21/src/generated/Android.App.Activity.cs:2707
07-28 23:08:39.071 I/MonoDroid(4040):at(包装器动态方法)对象。1f96a184-9cb6-4d05-8516-4c4d2e85d8d7(intptr、intptr、intptr)
07-28 23:08:39.071 I/MonoDroid(4040):--托管异常堆栈跟踪结束---
07-28 23:08:39.071 I/MonoDroid(4040):android.view.InflateException:只能与有效的ViewGroup根和attachToRoot=true一起使用
07-28 23:08:39.071 I/MonoDroid(4040):在android.view.LayoutInflater.充气(LayoutInflater.java:475)
07-28 23:08:39.071 I/MonoDroid(4040):在android.view.LayoutInflater.充气(LayoutInflater.java:414)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout$TabView.update(TabLayout.java:1196)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout$TabView。(TabLayout.java:1112)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.createTabView(TabLayout.java:612)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.addTabView(TabLayout.java:646)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.addTab(TabLayout.java:345)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.addTab(TabLayout.java:320)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:601)
07-28 23:08:39.071 I/MonoDroid(4040):在android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:575)
07-28 23:08:39.071 I/MonoDroid(4040):在md5be39043e4dbb7988fedb01f9386df4d7.MainActivity.n_onCreate(本机方法)
07-28 23:08:39.071 I/MonoDroid(4040):位于md5be39043e4dbb7988fedb01f9386df4d7.MainActivity.onCreate(MainActivity.java:28)
07-28 23:08:39.071 I/MonoDroid(4040):位于android.app.Activity.performCreate(Activity.java:5990)
07-28 23:08:39.071 I/MonoDroid(4040):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
07-28 23:08:39.071 I/MonoDroid(4040):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
07-28 23:08:39.071 I/MonoDroid(4040):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
07-28 23:08:39.071 I/MonoDroid(4040):在android.app.ActivityThread.access$800(ActivityThread.java:151)
07-28 23:08:39.071 I/MonoDroid(4040):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
07-28 23:08:39.071 I/MonoDroid(4040):在android.os.Handler.dispatchMessage(Handler.java:102)上
07-28 23:08:39.071 I/MonoDroid(4040):在android.os.Looper.loop(Looper.java:135)
07-28 23:08:39.071 I/MonoDroid(4040):位于android.app.ActivityThread.main(ActivityThread.java:5254)
07-28 23:08:39.071 I/MonoDroid(4040):位于java.lang.reflect.Method.invoke(本机方法)
07-28 23:08:39.071 I/MonoDroid(4040):位于java.lang.reflect.Method.invoke(Method.java:372)
07-28 23:08:39.071 I/MonoDroid(4040):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
07-28 23:08:39.071 I/MonoDroid(4040):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我没有在任何地方使用
,所以我假设它是其中一个控件的内部?我认为这只是XamarinAndroid的一个问题(或者我在某个地方犯了一个错误),因为似乎有几个非常相似的Java实现,我认为它们可以正常工作


我已将完整示例上载到。

在清除bin和obj目录后,出现了一点幻象错误,现在它可以正常工作。

我也有同样的问题,原因是另一个,如果包含任何嵌套片段,则可能会引发此问题,但不实现onCreateview()

所以,如果在viewPager中包含嵌套片段,请确保它们都以正确的方式实现


希望这能激励任何人面对同样的问题

你在GitHub上的示例,在PageFragment.cs中更改第36行使其在VS2013中生成后,在这里生成并运行良好。谢谢@Cheesebaron,刚刚在清除bin和obj目录后尝试过,现在在这里也运行良好。好的,很高兴听到它为你解决了问题。如果你需要