我正在努力解决问题!
我创建了一个片段来填充带有文本的页面,所以这里是完整的OnCreateView:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.Inflate(Resource.Layout.ProductInfo, container, false);
List<products> SelectedCoinList = (from productname in coinList
where productname.ProductName.Contains(SelectedProductName, StringComparison.OrdinalIgnoreCase)
select productname).ToList<products>();
ImageView ProductLogo = view.FindViewById<ImageView>(Resource.Id.ProductInfoLogo);
var imageBitmap = GetImageBitmapFromUrl("http://******/thumbnails/" + SelectedProductList[position].Symbol + ".png");
ProductLogo.SetImageBitmap(imageBitmap);
TextView txtProductInfoName = view.FindViewById<TextView>(Resource.Id.txtProductInfoName);
txtProductInfoName.Text = SelectedProductList[position].FullName;
TextView txtProductInfoPrice = view.FindViewById<TextView>(Resource.Id.txtProductInfoPrice);
txtProductInfoPrice.Text = "€ " + SelectedProductList[position].Price;
return view;
}
在MainActivity.cs中我有这个代码(应该)启动片段:
public void ListViewProducts_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
//Give variables the right value to share with other classes
ProductName = productsList[e.Position].ProductNameName;
position = e.Position;
// Set view to Info
SetContentView(Resource.Layout.ProductInfo);
}
public string GetProductName() {
return ProductName; //return your mainActivity list
}
问题是Fragment没有启动或者什么,因为它加载了ProductInfo页面,但是使用了默认文本。我通过在OnCreateView中放置断点来解决这个问题,但没有使用它们。
有什么建议吗?
答案 0 :(得分:0)
您需要创建片段的实例并将其插入Activity布局的视图中。例如,您可以使用FrameLayout。 在活动布局中添加框架布局
<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />
使用属性
android:visibility="gone"
如果您希望frameLayout不可见,并且在您的活动开始时不占用任何空间。
然后在你的活动中有一个像这样的方法
private YourFragment _fragment;
private void DisplayFragment()
{
var fragmentContainer = FindViewById<FrameLayout>
(Resource.Id.fragmentContainer);
_fragment= new YourFragment();
var fragmentManager = FragmentManager.BeginTransaction();
fragmentManager.Add(Resource.Id.fragmentContainer, _fragment);
fragmentManager.Commit();
fragmentContainer .Visibility = ViewStates.Visible; //Makes your fragment container visible if you set visibility=gone"
}