2011-08-03 115 views
2

其實我有兩個java類,其中一個是活動類現在從該活動類我想調用第二類的功能,這不是一個活動類..所有作品罰款,但是當我在該函數內使用SharedPreferences它顯示我一個錯誤,「無法啓動活動ComponentInfo java.lang.NullPointerException」..兩個java文件的代碼是..任何人都可以幫助..無法啓動活動ComponentInfo java.lang.NullPointerException

code for first Java文件:爲第二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 

    } 
} 

代碼:

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; 
    } 
+0

您可以發佈整個堆棧跟蹤嗎? –

+0

看到更新的答案.... – ngesh

+0

我看不到你的代碼.. – ngesh

回答

2

其不可能的,因爲其他類簡化版,知道有一種叫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); 
+0

你現在的工作..更多事情當我使用Uri時出現類似的錯誤EVENTS_URI = Uri.parse(getCalendarUriBase (this)+「events」); \t \t \t \t getContentResolver()。delete(EVENTS_URI,null,null);裏面的那個函數,所以如何可以解決 – AndroidDev

+0

你在哪裏做這個.. – ngesh

+0

裏面的測試函數實際上每當我使用sharepreference和uri事件..這個錯誤出現..現在共享偏好解決了,所以我如何解決下一個錯誤 – AndroidDev

1
CycleManager.getSingletonObject().test(this); 

public void test(Context c) 
    { 
    SharedPreferences prefs; 
prefs = PreferenceManager.getDefaultSharedPreferences(c); 
} 
0

N o你不能在普通簡單的java類中使用Activity或Android函數。既然你只能在簡單的Java類使用Java庫

一個可能的解決方案是:

在活動中創建一個公共靜態SharedPreferences對象,並創建這樣的SplashScreen對象:

public static SharedPreferences pref = null; 
public static SplashScreen sp; 

在閃屏的onCreate做到這一點

sp = this; 

在Java類方法做到這一點

SplashScreen.pref = SplashScreen.sp.getSharedPreferences("my pref", 0); 
相關問題