我有一堆不同的库试图一起工作,我非常接近,但只有一个问题。
我创建了一个名为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
的实际片段类(我称之为.MvxSherlockDialogFragment
IMvxFragmentView
这一切都很好(实际上我已经创建了一个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不喜欢那样......