【问题标题】:using Inflate with a null parent viewGroup is discouraged ,strange exception in Xamarin Android +MVVM Cross不鼓励使用带有 null 父 viewGroup 的 Inflate,Xamarin Android +MVVM Cross 中的奇怪异常
【发布时间】: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


【解决方案1】:

我正在查看调试跟踪。实际上有一个异常在 Create 方法中未处理,因为 oncreate 没有 Try Catch 块。实际上异常是“二进制 XML 文件第 1 行:您必须提供 layout_height属性”。我没有把片段内的文本框的高度。现在它是固定的。

【讨论】:

    【解决方案2】:

    您似乎在这里找到了问题,但您仍然不应该将 null 父级传递给充气机。如果你这样做,那么你放在父母身上的任何主题设置等都不会影响你膨胀的视图。而是将 false 作为第三个参数传递,以便视图不会附加到父级,但会从中获取选项。

    【讨论】:

    • 谢谢。是真的吗?但是3.1.1稳定版没有第三个参数。要我切换到3.1.2测试版吗?。对于大项目来说足够稳定吗?
    猜你喜欢
    • 2015-06-14
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多