【发布时间】:2014-07-25 22:21:48
【问题描述】:
我是 Xamarin 开发的新手。我知道以下问题是一个众所周知的问题,并在很多论坛中讨论过。但我找不到这个问题的确切解决方案。所以请注意,这不是一个重复的问题。
我正在尝试将片段添加到 android 布局中。当我为片段充气时出现以下异常。
"using Inflate with a null parent viewGroup is discouraged - see https://github.com/MvvmCross/MvvmCross/issues/507"
我已经检查了附带异常的给定 URL。实际上,我正在使用的程序集中没有“Binding Inflate”的重载方法。此时我只能访问一个只有两个输入参数(布局,视图组)的方法。Github 中的问题已关闭,并指出此异常不再出现在最新的 MVVM 交叉(3.1.1)中。但仍然得到最新稳定版本中的相同异常。Mvvm Cross 3.1.2 beta 有一个带有三个参数的重载方法,如果视图组为空,我们可以在其中传递一个布尔值。但是即使我为最后一个参数传递了一个 false,我也会遇到同样的异常.我在这里做错了什么?谁能帮帮我?
活动
[Activity(Label = "HomeView", MainLauncher = true)]
public class HomeView : MvxFragmentActivity
{
//Fragment
private HomeFragment _homeFragment;
public new HomeViewModel ViewModel
{
get { return (HomeViewModel) base.ViewModel; }
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.HomeView);
this.AddFragment(_homeFragment);
}
protected override void OnViewModelSet()
{
base.OnViewModelSet();
//Create the Home Fragment
_homeFragment = new HomeFragment {ViewModel = ViewModel};
}
//Add the Fragments to View
private void AddFragment(MvxFragment fragment)
{
var fragmentTrasaction = SupportFragmentManager.BeginTransaction();
fragmentTrasaction.Replace(Resource.Id.HomeContainer, _homeFragment);
fragmentTrasaction.Commit();
}
}
片段
public class HomeFragment : MvxFragment
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignore = base.OnCreateView(inflater, container, savedInstanceState);
return this.BindingInflate(Resource.Layout.HomeFragment, null);//Here i am getting the exception
}
}
活动布局
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Test.Droid"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
android:id="@+id/HomeContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
片段布局
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Test.Droid"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:text="Home"
android:layout_width="wrap_content"
android:layout_weight="1" />
我正在使用的 MVVM 包
"MvvmCross.HotTuna.CrossCore" version="3.1.1" targetFramework="MonoAndroid42"
"MvvmCross.HotTuna.Droid.Fragging" version="3.1.1" targetFramework="MonoAndroid42"
"MvvmCross.HotTuna.MvvmCrossLibraries" version="3.1.1" targetFramework="MonoAndroid42"
"MvvmCross.HotTuna.Plugin.Json" version="3.1.1" targetFramework="MonoAndroid42"
"MvvmCross.HotTuna.StarterPack" version="3.1.1" targetFramework="MonoAndroid42"
"MvvmCross.PortableSupport" version="3.1.1" targetFramework="MonoAndroid42"
"Xamarin.Android.Support.v4" version="20.0.0" targetFramework="MonoAndroid42"
提前致谢
【问题讨论】:
-
您包含的消息只是调试跟踪 - 不是例外。如果有异常,请编辑问题以包含异常类型和堆栈跟踪。
-
@Stuart 是的。你说的是绝对正确的。我正在查看调试跟踪。实际上有一个异常在 Create 方法上没有处理,因为 oncreate 没有 Try Catch 块.实际上例外是“二进制 XML 文件第 1 行:您必须提供 layout_height 属性”。我没有将片段内的文本框的高度。现在它已修复。非常感谢。我会更新回答并关闭它。顺便说一句,您能否建议我在 Xamarin 跨平台项目中进行异常处理或登录的最佳实践?
标签: c# android-fragments xamarin xamarin.android mvvmcross