gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:58 26 4
gpt4 key购买 nike

实际上我有两个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com