我有一个实现View
类的类。我还有一个Activity
来托管2个碎片。
在OnCreate
的{{1}}方法中,我实例化Fragment
类并传递View
,因为它在其构造函数中包含上下文。
我在Activity.ApplicationContext
内有两种方法。一个在Fragment
中调用,另一个在OnCreateView
中调用。在Fragment
中调用的方法中,View
类对象的值不 null。但是,当我尝试从片段中其他位置调用的其他方法访问OnCreateView
对象时,应用程序失败,View
指向NullPointerException
对象。
我不明白为什么,然而这个类在片段的OnCreate方法中被实例化.Below是我的代码:
View
答案 0 :(得分:1)
关于OnCreate
方法中的代码,mView = new MyView (Activity.ApplicationContext);
这无助于创建View对象。另一个问题是,使用mView
缓存/保存视图对象是不安全的,因为Android中的视图可能随时更改。
你需要覆盖onCreateView(),正如jmateo.Except所建议的那样稍微改变一下:
// using local scope for the View object
View root = inflater.Inflate (Resource.Layout.fragment_map, container, false)
Populate();
return root;
答案 1 :(得分:0)
我从来没有做过Xamarin,只是直接使用Java但是同样的规则应该适用。您无法使用应用程序上下文实例化视图。您需要使用活动上下文,在使用片段时,您需要在onCreateView中执行此操作,而不是onCreate。
你的onCreateView应该类似于:
mView = inflater.Inflate (Resource.Layout.fragment_map, container, false)
Populate();
return mView;