Fragment中的View类对象为null

时间:2015-06-29 21:23:39

标签: c# android android-fragments xamarin xamarin.android

我有一个实现View类的类。我还有一个Activity来托管2个碎片。 在OnCreate的{​​{1}}方法中,我实例化Fragment类并传递View,因为它在其构造函数中包含上下文。

我在Activity.ApplicationContext内有两种方法。一个在Fragment中调用,另一个在OnCreateView中调用。在Fragment中调用的方法中,View类对象的值 null。但是,当我尝试从片段中其他位置调用的其他方法访问OnCreateView对象时,应用程序失败,View指向NullPointerException对象。

我不明白为什么,然而这个类在片段的OnCreate方法中被实例化.Below是我的代码:

View

2 个答案:

答案 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;