android - 无法启动 Activity ComponentInfo java.lang.NullPointerException

标签 android

实际上我有两个java类,其中一个是 Activity 类。现在,从该 Activity 类中,我想调用不在 Activity 类中的第二类函数。因此,一切正常,但当我在该函数内使用 SharedPreferences 时,它显示错误 Unable to start Activity ComponentInfo java.lang.NullPointerException。请任何人帮忙。

第一个 java 文件的代码:

public class SplashScreen extends Activity 
{
    public void onCreate(Bundle savedInstanceState) 
    {
          super.onCreate(savedInstanceState);
          
          setContentView(R.layout.splash_screen);
          
          
          CycleManager.getSingletonObject().test();//call functions of another class
          
    }
}

第二个java文件的代码:

public class CycleManager 
{       
    
    private static CycleManager cycleMangrObject;       
    
    private CycleManager() {            
            onInitialization(); 
            
            //Compute averages using data loaded from register
            ComputeAverages();
    }
    
    public static synchronized CycleManager getSingletonObject() {          
            if (cycleMangrObject == null) {
            cycleMangrObject = new CycleManager();
            }
            
            return cycleMangrObject;
    }
    
    public Object clone() throws CloneNotSupportedException {           
            throw new CloneNotSupportedException();
        
    }
    
    public void test()
    {
        SharedPreferences preferences1 =getSharedPreferences("myPreferences", 0);
    }

    
public void setAlertOnDevice(){                 
                //Delete data
                Uri EVENTS_URI = Uri.parse(getCalendarUriBase(this) + "events");
                int id = 1; // calendar entry ID
                ContentResolver cr = getContentResolver();
                EVENTS_URI= ContentUris.withAppendedId(EVENTS_URI, id);
                cr.delete(EVENTS_URI, "calendar_id=1", null);
                Resources res=getResources();
                
                //set Alerts in device calendar
                Date dtStartDate = CycleManager.getSingletonObject().getStartDate();
                    
                boolean bDeleteAndReturn = false;
                
                Calendar cal = Calendar.getInstance();
                
                
                if (dtStartDate.getTime() ==  CycleManager.getSingletonObject().getDefaultDate().getTime())
                {
                        bDeleteAndReturn = true;
                        dtStartDate = cal.getTime();
                }  
                                
                getOffsetsForCycleStages(CycleManager.getSingletonObject().iAvgCycleTime);
                
                if(bDeleteAndReturn==false)
                {
                    if (CycleManager.getSingletonObject().bNextCycleAlert && iStart>0)
                    {
                        cal.setTime(dtStartDate);
                        cal.add(Calendar.DATE, iStart);                   
                       // ContentResolver cr = getContentResolver();
                        String str=res.getString(R.string.alert_start);
                        String strDescription=res.getString(R.string.alert_start_msg);
                        ContentValues values = new ContentValues();
                        values.put("calendar_id", 1);
                        values.put("title", str);
                        values.put("description", strDescription);
                        values.put("dtstart", cal.getTimeInMillis()); 
                        values.put("dtend", cal.getTimeInMillis()); 
                        cr.insert(EVENTS_URI, values);
                    }
                    if (CycleManager.getSingletonObject().bSafeAlert)
                    {
                         if (iSafe1>0)
                         {
                            cal.setTime(dtStartDate);
                            cal.add(Calendar.DATE, iSafe1);                       
                          //  ContentResolver cr = getContentResolver();
                            String str=res.getString(R.string.alert_safe);
                            String strDescription=res.getString(R.string.alert_safe_msg) + " " + new Integer(iUnsafe1-iSafe1-1);
                            ContentValues values = new ContentValues();
                            values.put("calendar_id", 1);
                            values.put("title", str);
                            values.put("description", strDescription);
                            values.put("dtstart", cal.getTimeInMillis()); 
                            values.put("dtend", cal.getTimeInMillis()); 
                            cr.insert(EVENTS_URI, values);
                         }
                         if (iSafe2>0)
                         {
                             cal.setTime(dtStartDate);
                             cal.add(Calendar.DATE, iSafe2);                           
                           //  ContentResolver cr = getContentResolver();
                             String str=res.getString(R.string.alert_safe);
                             String strDescription=res.getString(R.string.alert_safe_msg) + " " + new Integer(CycleManager.getSingletonObject().iAvgCycleTime-iSafe2-1);
                             ContentValues values = new ContentValues();
                             values.put("calendar_id", 1);
                             values.put("title", str);
                             values.put("description", strDescription);
                             values.put("dtstart", cal.getTimeInMillis()); 
                             values.put("dtend", cal.getTimeInMillis()); 
                             cr.insert(EVENTS_URI, values);     
                         }
                    }
                    if (CycleManager.getSingletonObject().bUnsafeAlert)
                    {
                         if (iUnsafe1>0)
                         {
                             cal.setTime(dtStartDate);
                             cal.add(Calendar.DATE, iUnsafe1);                         
                            // ContentResolver cr = getContentResolver();
                             String str=res.getString(R.string.alert_unsafe);
                             String strDescription=res.getString(R.string.alert_unsafe_msg) + " " + new Integer(iFertile-iUnsafe1-1);
                             ContentValues values = new ContentValues();
                             values.put("calendar_id", 1);
                             values.put("title", str);
                             values.put("description", strDescription);
                             values.put("dtstart", cal.getTimeInMillis()); 
                             values.put("dtend", cal.getTimeInMillis()); 
                             cr.insert(EVENTS_URI, values);
                         }
                         if (iUnsafe2>0)
                         {
                             cal.setTime(dtStartDate);
                             cal.add(Calendar.DATE, iUnsafe2);
                            // ContentResolver cr = getContentResolver();
                             String str=res.getString(R.string.alert_unsafe);
                             String strDescription=res.getString(R.string.alert_unsafe_msg) + " " + new Integer(iSafe2-iUnsafe2-1);
                             ContentValues values = new ContentValues();
                             values.put("calendar_id", 1);
                             values.put("title", str);
                             values.put("description", strDescription);
                             values.put("dtstart", cal.getTimeInMillis()); 
                             values.put("dtend", cal.getTimeInMillis()); 
                             cr.insert(EVENTS_URI, values);
                         }
                    }
                    if (CycleManager.getSingletonObject().bFertileAlert && iFertile>0)
                    {
                        cal.setTime(dtStartDate);
                        cal.add(Calendar.DATE, iFertile);
                       // ContentResolver cr = getContentResolver();
                        String str=res.getString(R.string.alert_fertile);
                        String strDescription=res.getString(R.string.alert_fertile_msg) + " " + new Integer(iUnsafe2-iFertile-1);
                        ContentValues values = new ContentValues();
                        values.put("calendar_id", 1);
                        values.put("title", str);
                        values.put("description", strDescription);
                        values.put("dtstart", cal.getTimeInMillis()); 
                        values.put("dtend", cal.getTimeInMillis()); 
                        cr.insert(EVENTS_URI, values);
                    }
                    if (CycleManager.getSingletonObject().bPMSAlert)
                    {
                        cal.setTime(dtStartDate);
                        cal.add(Calendar.DATE, iStart-7);                     
                      //  ContentResolver cr = getContentResolver();
                        String str=res.getString(R.string.alert_pms);
                        String strDescription=res.getString(R.string.alert_pms_msg);
                        ContentValues values = new ContentValues();
                        values.put("calendar_id", 1);
                        values.put("title", str);
                        values.put("description", strDescription);
                        values.put("dtstart", cal.getTimeInMillis()); 
                        values.put("dtend", cal.getTimeInMillis()); 
                        cr.insert(EVENTS_URI, values);
                    }
                }
    }
    
    private String getCalendarUriBase(Activity act){            
                String calendarUriBase = null;
                Uri calendars = Uri.parse("content://calendar/calendars");
                Cursor managedCursor = null;
                
                try 
                {
                    managedCursor = act.managedQuery(calendars, null, null, null, null);
                } 
                catch (Exception e) {}
                
                if (managedCursor != null) 
                {
                    calendarUriBase = "content://calendar/";
                }              
                else 
                {
                    calendars = Uri.parse("content://com.android.calendar/calendars");
                    try 
                    {
                        managedCursor = act.managedQuery(calendars, null, null, null, null);
                    } 
                    catch (Exception e){}
                    
                    if (managedCursor != null) 
                    {
                        calendarUriBase = "content://com.android.calendar/";
                    }
                }
                return calendarUriBase;
    }

最佳答案

这是不可能的,因为另一个类不知道有一个叫做 SharedPreference 的东西..所以

public void test(Context c)
    {
        SharedPreferences preferences1 =c.getSharedPreferences("myPreferences", 0);
    }

通话时

CycleManager.getSingletonObject().test(this);//call functions of another class

再一次

c.getContentResolver().delete(EVENTS_URI, null, null);

关于android - 无法启动 Activity ComponentInfo java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922495/

相关文章:

API 27 上的 Android 不同风格

android - 将图标放在 MaterialButton 中的文本顶部

android - 安卓专业版 2 : What are getTextView() and registerMenu()?

android - solo.search text() 不滚动可扩展列表

android 操作栏输入事件

java - Activity 识别 API 未检测到位置变化 - Android OREO

android - Eclipse 中的 "Design"库即使使用 API 21 也无法编译

android - 找不到 com.snapchat.kit.sdk :core:1. 6.5

android - onScrolled 在用户不滚动的情况下被调用(回收器 View 无限滚动)

C#串口接收数据事件