我使用visual studio 2015和xamarin。 我有使用xamarin android的经验。
我需要做的是: 实现具有3个屏幕的应用程序,可以在这些屏幕之间滑动: 1)报告屏幕 2)主屏幕 3)细节屏幕
好吧,我已经意识到一个带有viewPager的应用程序,这三个片段=>所有的作品实际上......:)但目标已经改变,现在我必须首先加载包含列表的主屏幕。 好的我已经这样做了 viewPager.SetCurrentItem(1,true);
viewPager.SetCurrentItem(1, true);
以及所有作品,我可以滑动到主页或报告或详细信息
但是我的最后一个问题就是这个,当我点击列表视图来加载细节片段时我需要..但我不能!!!!
我尝试使用fragmentManager.Replace进行一些操作但是我的所有测试都崩溃了!
// inside listview item click
DetailFragment detail = new DetailFragment();
//
Android.Support.V4.App.FragmentTransaction ft = this.FragmentManager.BeginTransaction();
ft.Replace(Resource.Layout.MainLayout, detail);
//
ft.AddToBackStack(null);
ft.Commit();
我完全失败了,对不起我的英语太糟糕了!
我希望您了解我的问题,在viewPager中有3个片段,在app启动时加载第二个片段。单击列表项加载详细信息片段...
如果有人有任何想法?
感谢您的时间和所有您的知识分享它真的很好
答案 0 :(得分:0)
问题是您的替换事务,您正在尝试替换不在当前布局中的ID。
您正在尝试替换Resource.Layout.MainLayout
。替换事务需要视图层次结构中当前视图的ID。
编辑:
目前尚不清楚如何开始展示ViewPager。让我们假设它自己在片段中膨胀。反过来,片段显示在Resource.Id.content
中,这是您用来显示片段的占位符。
Resource.Id.content
位于Activity
中的布局中,您可以使用ViewPager设置片段。它们的布局可能就像:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_frame"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
FrameLayout是您在进行交易时有效替换的内容。您要替换的内容必须是布局的一部分。您不能只是说要替换整个布局,因为它不是可见ID。