NullPointerException:尝试调用虚拟方法';android.content.Context android.content.ContextWrapper.getApplicationContext()';

NullPointerException:尝试调用虚拟方法';android.content.Context android.content.ContextWrapper.getApplicationContext()';,android,android-fragments,android-activity,nullpointerexception,android-context,Android,Android Fragments,Android Activity,Nullpointerexception,Android Context,当我尝试获取getApplicationContext()时,我得到了java.lang.NullPointerException。我从用户那里得到这个错误,无法在我的手机上重现 是否在加载完整的片段/活动之前,我正在调用getActivity().getApplicationContext()?如果这是问题所在,那么我可以从最早的时间调用片段中的哪个函数getActivity().getApplicationContext() 我应该把getActivity().getApplicationC

当我尝试获取
getApplicationContext()
时,我得到了java.lang.NullPointerException。我从用户那里得到这个错误,无法在我的手机上重现

是否在加载完整的片段/活动之前,我正在调用
getActivity().getApplicationContext()
?如果这是问题所在,那么我可以从最早的时间调用片段中的哪个函数
getActivity().getApplicationContext()

我应该把
getActivity().getApplicationContext()
放在
onResume()
中,它是片段生命周期中最后一个激活的吗

基本上,我需要在片段加载后调用它

在我的片段中创建视图

@Override
public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    ctxt = getActivity().getApplicationContext();

    v = inflater.inflate(R.layout.fragment_test,
            container, false);

    //MODE CODE HERE THAT I AM NOT SHOWING  

    //THIS LINE BELOW IS GIVING THE NULL POINTER EXCEPTION - Am I calling getActivity().getApplicationContext() too early in the Fragment's lifecycle?
    _adapter_lv_blockedApps2 = new Adapter_BlockedApps(
                    getActivity().getApplicationContext(), holder);

    return v;

}
下面是我从用户手机上得到的堆栈跟踪

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.ContextWrapper.getApplicationContext()' on a null object reference
at com.mavdev.focusoutfacebook.fragments.scheduledblocks.Fragment_scheduled_newdetail$populateLV_blockedAppsFromSystem.doInBackground(Fragment_scheduled_newdetail.java:2597)
at com.mavdev.focusoutfacebook.fragments.scheduledblocks.Fragment_scheduled_newdetail$populateLV_blockedAppsFromSystem.doInBackground(Fragment_scheduled_newdetail.java:2486)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more
完整功能: 私有类populateLV_AppsFromSystem扩展 异步任务{

    @Override
    protected Void doInBackground(Void... params) {
        if (!isCancelled()) {
            ArrayList<Datamodel> holder = new ArrayList<Datamodel>();

            Map<String, Drawable> map_Apps = new HashMap<String, Drawable>();

            List<String> Apps_List = Arrays.asList(TextUtils.split(
                    ToDisplay.getApps(), ","));

            if (Apps_List != null) {
                for (String s : Apps_List) {
                    String s_appName = "";

                    try {
                        s_appName = mAppInfo.getAppNamefromPackage(s,
                                getActivity().getApplicationContext());
                    } catch (Exception e) {
                        s_appName = "Unknown";
                    }
                    Drawable d = mAppInfo.getIconDrawablefromAppName(
                            s_appName, getActivity());
                    map_Apps.put(s_appName, d); 
                }
            }

            /****************************************************
             * GETTING THE ADAPTER
             ****************************************************/
            for (Map.Entry<String, Drawable> entry : map_Apps
                    .entrySet()) {

                if (isCancelled()) {
                    return null;
                }

            }

            **//THIS IS WHERE THE APP IS CRASHING WITH NULL POINTER**  
            _adapter_lv_Apps2 = new Adapter_Apps(
                    getActivity().getApplicationContext(), holder);

        } else {
            _adapter_lv_Apps2 = null;
        }

        /****************************************************/

        return null;
    }
@覆盖
受保护的Void doInBackground(Void…参数){
如果(!isCancelled()){
ArrayList holder=新的ArrayList();
Map Map_Apps=new HashMap();
List Apps\u List=Arrays.asList(TextUtils.split(
ToDisplay.getApps(),“,”);
如果(应用程序列表!=null){
用于(字符串s:应用程序列表){
字符串s_appName=“”;
试一试{
s_appName=mAppInfo.getAppNamefromPackage,
getActivity().getApplicationContext());
}捕获(例外e){
s_appName=“未知”;
}
Drawable d=mAppInfo.getIconDrawablefromAppName(
s_appName,getActivity());
map_Apps.put(s_appName,d);
}
}
/****************************************************
*获取适配器
****************************************************/
对于(Map.Entry:Map\u应用程序
.entrySet()){
如果(isCancelled()){
返回null;
}
}
**//这就是应用程序因空指针而崩溃的地方**
_adapter\u lv\u Apps2=新的adapter\u Apps(
getActivity().getApplicationContext(),holder);
}否则{
_适配器_lv_Apps2=null;
}
/****************************************************/
返回null;
}

不可能,stacktrace中没有onCreateView…当然getActivity返回null…当您可以使用getActivity Safety时,从片段的生命周期返回null应该是显而易见的。
AsyncTask
doInBackground
方法的
行是否给出了
NullPointerException
的一部分一堆代码使问题变得简短,但让我添加所有内容。超过2597行?您是否在未附加的片段上调用getView?因为您在片段中定义了a
ctxt=getActivity().getApplicationContext()
尝试将其定义为
final
变量,并使用该变量,而不是在
适配器的参数中再次调用它