0

我有一堆不同的库试图一起工作,我非常接近,但只有一个问题。

我创建了一个名为SherlockDialogFragment继承自的类SherlockFragment(而不是使用SherlockListFragment- 这是因为这里介绍的键盘问题)。这是我的代码:

    public class SherlockDialogFragment : SherlockFragment
{
    public RootElement Root
    {
        get { return View.FindViewById<LinearDialogScrollView>(Android.Resource.Id.List).Root; }
        set { View.FindViewById<LinearDialogScrollView>(Android.Resource.Id.List).Root = value; }
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var ignored = base.OnCreateView(inflater, container, savedInstanceState);
        var layout = new LinearLayout(Activity) { Orientation = Orientation.Vertical };
        var scroll_view = new LinearDialogScrollView(Activity)
        {
            Id = Android.Resource.Id.List,
            LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent)
        };
        layout.AddView(scroll_view);
        return layout;
    }
}

然后我做一个常规的事情,创建一个继承自 this 但也使用的 eventsource 类,然后是继承 eventsource 类IMvxEventSourceFragment的实际片段类(我称之为.MvxSherlockDialogFragmentIMvxFragmentView

这一切都很好(实际上我已经创建了一个SherlockDialogActivity相同的方式并且很好),但是一个问题是当我在带有选项卡的屏幕上使用这个片段时(我正在使用一个与上面类似的类MvxSherlockFragmentActivity)。使用对话框切换到选项卡时,即使使用预先填充的数据,视图也会显示得很好。然而问题是当我从那个片段/选项卡切换,然后回到它时,对话框元素都具有相同的值。

在我的特定示例中,它是一个带有用户名和密码的登录页面。当我第一次进入片段时,一切都很好。当我出去和回来时,密码值在用户名字段和密码字段中。

我确定这与SherlockDialogFragment课堂有关 - 在SherlockDialogActivity课堂上我也有这个:

        public override void OnContentChanged()
    {
        base.OnContentChanged();
        var list = FindViewById<LinearDialogScrollView>(Android.Resource.Id.List);

        if (list == null)
        {
            throw new RuntimeException("Your content must have a ViewGroup whose id attribute is Android.Resource.Id.List and is of type LinearDialogScrollView");
        }

        list.AddViews();
    }

但是,这在片段中不起作用,因为没有OnContentChanged事件。此外,另一个区别是,在事件中,SherlockDialogActivity布局被创建一次OnCreate- 但是在SherlockFragmentActivity每次查看片段时,我都会创建它。我知道这可能不是最好的方法,但我试图做到这一点OnCreate并将其保存在一个变量中,然后返回该变量OnCreateView,但 android不喜欢那样......

4

1 回答 1

0

好吧,我觉得自己像个白痴。我正在创建/绑定OnViewCreated- 但是我需要在其中完成所有绑定OnStart- 我想我正在遵循 Stuart 的一些(可能是旧的)示例代码。

显然,对于我正在使用的常规活动,OnCreate但这不适用于片段,因为视图没有在那里初始化 - 它在OnCreateView.

所以为了将来参考 - 做所有的绑定OnStart

于 2013-08-20T00:21:28.790 回答