java–getApplicationContext()返回null,但适用于其他活动

java–getApplicationContext()返回null,但适用于其他活动,第1张

概述我正在使用SQLite数据库,每当我调用它时,我都需要将上下文传递给它.我通常使用getApplicationContext()来执行此 *** 作,该工作在其他活动中.在我当前的类中,它只返回null.救命!04-0616:46:19.523:E/AndroidRuntime(4279):Process:com.example.schoolandrevisiontimetable,PID:

我正在使用sqlite数据库,每当我调用它时,我都需要将上下文传递给它.我通常使用getApplicationContext()来执行此 *** 作,该工作在其他活动中.
在我当前的类中,它只返回null.救命!

04-06 16:46:19.523: E/AndroIDRuntime(4279): Process: com.example.schoolandrevisiontimetable, PID: 427904-06 16:46:19.523: E/AndroIDRuntime(4279): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.schoolandrevisiontimetable/com.example.schoolandrevisiontimetable.input_slessontime}: java.lang.NullPointerException: Attempt to invoke virtual method 'androID.content.Context androID.content.Context.getApplicationContext()' on a null object reference04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2225)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread.access0(ActivityThread.java:148)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.os.Handler.dispatchMessage(Handler.java:102)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.os.Looper.loop(Looper.java:135)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread.main(ActivityThread.java:5312)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at java.lang.reflect.Method.invoke(Native Method)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at java.lang.reflect.Method.invoke(Method.java:372)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:696)04-06 16:46:19.523: E/AndroIDRuntime(4279): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'androID.content.Context androID.content.Context.getApplicationContext()' on a null object reference04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.content.Contextwrapper.getApplicationContext(Contextwrapper.java:105)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at com.example.schoolandrevisiontimetable.input_slessontime.getAmountOfDaysUsed(input_slessontime.java:95)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at com.example.schoolandrevisiontimetable.input_slessontime.<init>(input_slessontime.java:30)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at java.lang.reflect.Constructor.newInstance(Native Method)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at java.lang.class.newInstance(Class.java:1572)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.Instrumentation.newActivity(Instrumentation.java:1088)04-06 16:46:19.523: E/AndroIDRuntime(4279):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2215)04-06 16:46:19.523: E/AndroIDRuntime(4279):     ... 10 more

这是它返回null的类
package com.example.schoolandrevisiontimetable;

import java.util.List;import com.astuetz.PagerSlIDingTabStrip;import Database.DatabaseHelper;import Database.MC_sschoolday;import androID.app.Activity;import androID.app.Actionbar;import androID.app.Fragment;import androID.content.Context;import androID.os.Bundle;import androID.support.v4.app.FragmentActivity;import androID.support.v4.app.FragmentManager;import androID.support.v4.app.FragmentPagerAdapter;import androID.support.v4.vIEw.VIEwPager;import androID.util.TypedValue;import androID.vIEw.LayoutInflater;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.os.Build;public class input_slessontime extends FragmentActivity {    DatabaseHelper db;    String[] days = new String[getAmountOfDaysUsed()];    private PagerSlIDingTabStrip tabs;    private VIEwPager pager;    private MyPagerAdapter adapter;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.fragment_input_slessontime);        tabs = (PagerSlIDingTabStrip) findVIEwByID(R.ID.tabs);        pager = (VIEwPager) findVIEwByID(R.ID.pager);        adapter = new MyPagerAdapter(getSupportFragmentManager());        final int pagemargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()                .getdisplayMetrics());        pager.setPagemargin(pagemargin);        tabs.setVIEwPager(pager);        if (savedInstanceState == null) {            getFragmentManager().beginTransaction()                    .add(R.ID.container, new PlaceholderFragment()).commit();        }    }    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.input_slessontime, menu);        return true;    }    @OverrIDe    public boolean onoptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroIDManifest.xml.        int ID = item.getItemID();        if (ID == R.ID.action_settings) {            return true;        }        return super.onoptionsItemSelected(item);    }    /**     * A placeholder fragment containing a simple vIEw.     */    public static class PlaceholderFragment extends Fragment {        public PlaceholderFragment() {        }        @OverrIDe        public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                Bundle savedInstanceState) {            VIEw rootVIEw = inflater.inflate(R.layout.fragment_input_slessontime, container, false);            return rootVIEw;        }    }    public int getAmountOfDaysUsed(){        db = new DatabaseHelper(getApplicationContext());           List<MC_sschoolday> MC_sschoolday = db.getAllSSchoolDays(); //gets all the lessons and stores them in a List        int amountOfDaysUsed=0;        MC_sschoolday[] sday = new MC_sschoolday[7];         for (int i =0; i<7; i++){            sday[i]=MC_sschoolday.get(i); //stores the lessons in an array         }        for (int i =0; i<7; i++){            if(sday[i].getUsed().equals("y")){                amountOfDaysUsed++;            }        }         db.close();        return amountOfDaysUsed;     }    public voID getTitles(){        db = new DatabaseHelper(getApplicationContext());           MC_sschoolday[] sday = new MC_sschoolday[7];        List<MC_sschoolday> schoolday = db.getAllSSchoolDays();        int usedCount2=0;        for (int i =0; i< db.getAllSSchoolDays().size(); i++){            sday[i]=schoolday.get(i);            if(sday[i].getUsed().equals("y")){                days[usedCount2] = sday[i].getschool_day();                usedCount2++;            }        }        db.close();    }    public class MyPagerAdapter extends FragmentPagerAdapter {        public MyPagerAdapter(FragmentManager fm) {            super(fm);        }        @OverrIDe        public CharSequence getPageTitle(int position) {            return days[position];        }        @OverrIDe        public int getCount() {            return getAmountOfDaysUsed();        }        public androID.support.v4.app.Fragment switchFragmentDay(int num) {            DatabaseHelper db;            db = new DatabaseHelper(getApplicationContext());               MC_sschoolday[] sday = new MC_sschoolday[7];            List<MC_sschoolday> schoolday = db.getAllSSchoolDays();            int usedCount1=getAmountOfDaysUsed();            int [] dayID = new int[usedCount1];            int usedCount2=0;            for (int i =0; i< db.getAllSSchoolDays().size(); i++){                sday[i]=schoolday.get(i);                if(sday[i].getUsed().equals("y")){                    dayID[usedCount2] = (int) sday[i].getSchool_day_ID();                    usedCount2++;                }            }            db.close();            switch (dayID[num]){            case 1:                return new input_slessontime_monday();            case 2:                return new input_slessontime_tuesday();            case 3:                return new input_slessontime_wednesday();            case 4:                return new input_slessontime_thursday();            case 5:                return new input_slessontime_frIDay();            case 6:                return new input_slessontime_saturday();            case 7:                return new input_slessontime_sunday();            }            return null;        }        @OverrIDe        public androID.support.v4.app.Fragment getItem(int position) {            switch (position){                          case 0:                return switchFragmentDay(0);            case 1:                return switchFragmentDay(1);            case 2:                return switchFragmentDay(2);            case 3:                return switchFragmentDay(3);            case 4:                return switchFragmentDay(4);            case 5:                return switchFragmentDay(5);            case 6:                return switchFragmentDay(6);            }        return null;        }    }}

谢谢你的帮助!

解决方法:

String[] days = new String[getAmountOfDaysUsed()];

在成员变量初始化时,您过早地将活动用作Context.您需要等到活动生命周期中的onCreate()或更高版本.

总结

以上是内存溢出为你收集整理的java – getApplicationContext()返回null,但适用于其他活动全部内容,希望文章能够帮你解决java – getApplicationContext()返回null,但适用于其他活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1110845.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存