我目前正在尝试在Xamarin.Android中实现我的第一个RecyclerView。
在我的主布局文件中,我有一个DrawerLayout,其中包含一个FrameLayout和一个ListView。我想要实现的是,每次单击ListView中的项目时,都会使用FragmentManager加载包含RecyclerView的Fragment。
我面临的问题是,每次从Fragment中的OnCreateView返回时,都会遇到上述异常。
最让我困惑的是,当我逐步遍历OnCreateView中的代码时,FindViewById不会引发异常,并且似乎正确地填充了recyclerView。
任何帮助将不胜感激。谢谢。
DiscoverNew.axml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
DiscoverNewFragment.cs
public class DiscoverNewFragment : Fragment
{
RecyclerView recyclerView;
IngredientsAdapter ingredientsAdapter;
List<Ingredients> listOfIngredients;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = inflater.Inflate(Resource.Layout.DiscoverNew, container, false);
recyclerView = view.FindViewById(Resource.Id.recyclerView) as RecyclerView;
var layoutMan = new GridLayoutManager(recyclerView.Context, 2, GridLayoutManager.Vertical, false);
recyclerView.SetLayoutManager(layoutMan);
listOfIngredients = IngredientsData.LoadIngredients(this.Activity);
ingredientsAdapter = new IngredientsAdapter(listOfIngredients);
recyclerView.SetAdapter(ingredientsAdapter);
return view;
}
}
MainActivity.cs
[Activity(Label = "MyApp", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
. . .
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
. . .
OnMenuItemClick(0); // Load Fragment 0 at startup
}
. . .
void OnMenuItemClick(int position)
{
base.FragmentManager.BeginTransaction().Replace(Resource.Id.frameLayout, new DiscoverNewFragment()).Commit();
this.Title = "Discover";
drawerLayout.CloseDrawer(drawerListView);
}
}
注意:我从MainActivity.cs中省略了一些与抽屉布局设置有关的代码
答案 0 :(得分:0)
我刚刚通过将以下nuget软件包从27.0.2.1版本还原到26.1.0.1版本来解决了此问题:-xamarin.android.support.design 我知道这比解决方案更能解决问题,但是在尝试了不同的方法之后,这似乎是唯一可行的选择。