您的位置:首页 > 移动开发 > Android开发

Can't make static reference to non-static method ( Android getApplicationContext() )

2016-07-28 11:20 489 查看
The reason you were given for the error is correct. The fragments are static inner classes, they are in a scope
in which an instance of the Activity does not exist. You then have a method which you call which can only be referenced from an instance of the Activity. Since you don't have an instance, you can't make that call. For this situation, there are two basic fixes. 

1) Remove the static
keyword from the Fragment class definition. This would tie the definition of the class, and the instances of the class, to an instance of the the Activity and you would gain access to the Activity's instance methods. 

2) Call getActivity().getApplicationContext() instead.
The method getActivity() comes from the Fragment class and gives you access to the methods of the Activity. If you need a specific method that you added to the Activity, then you would need to cast:((MyActivity)getActivity()).myMethod(); 

The second approach is probably the better one. The Fragment lifecycle is independent of the Activity lifecycle,
and by making the Fragment an instance-level inner class you would end up tieing the two together. The FragmentManager may end up not liking it, and there could be issues when you do things like rotatge the screen.
https://coderanch.com/t/632507/Android/Mobile/Error-fix-static-reference-static
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: