Я уже много исследовал здесь, чтобы решить мою проблему. Я хочу, чтобы при создании действия оно выполняло метод из класса обслуживания. Это мой код: MenuActivity.class:
public class MenuActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
BgService tracker = new BgService();
tracker.changeIntent();
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
int intentstarts = prefs.getInt("intentstarts",0);
Toast.makeText(MenuActivity.this,String.valueOf(intentstarts), Toast.LENGTH_LONG).show();
//...
}}
BgService.класс
public class BgService extends Service {
public static String PREFS_NAME = "MyPrefsFile";
public void changeIntent(){
Context context = getApplicationContext();
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
//SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int intentstarts = prefs.getInt("intentstarts",0);
intentstarts++;
SharedPreferences.Editor edit = prefs.edit();
edit.putInt("intentstarts", intentstarts).commit();
}}
logcat (мне пришлось подвергнуть цензуре имя пакета):
02-27 19:23:49.265: E/AndroidRuntime(1092): FATAL EXCEPTION: main
02-27 19:23:49.265: E/AndroidRuntime(1092): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxxxxxx/com.xxx.xxxxxxx.MenuActivity}: java.lang.NullPointerException
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.os.Looper.loop(Looper.java:123)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-27 19:23:49.265: E/AndroidRuntime(1092): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 19:23:49.265: E/AndroidRuntime(1092): at java.lang.reflect.Method.invoke(Method.java:507)
02-27 19:23:49.265: E/AndroidRuntime(1092): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-27 19:23:49.265: E/AndroidRuntime(1092): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-27 19:23:49.265: E/AndroidRuntime(1092): at dalvik.system.NativeStart.main(Native Method)
02-27 19:23:49.265: E/AndroidRuntime(1092): Caused by: java.lang.NullPointerException
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100)
02-27 19:23:49.265: E/AndroidRuntime(1092): at com.xxx.xxxxxxx.BgService.changeIntent(BgService.java:36)
02-27 19:23:49.265: E/AndroidRuntime(1092): at com.xxx.xxxxxxx.MenuActivity.onCreate(MenuActivity.java:33)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-27 19:23:49.265: E/AndroidRuntime(1092): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-27 19:23:49.265: E/AndroidRuntime(1092): ... 11 more
Было бы неплохо, если бы вы могли найти решение для меня.
редактировать: после замены «контекста» на «это»: используя это вместо контекста:
SharedPreferences prefs = this.getSharedPreferences(PREFS_NAME, 0);
02-27 21:01:57.560: E/AndroidRuntime(1316): FATAL EXCEPTION: main
02-27 21:01:57.560: E/AndroidRuntime(1316): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxxxxxx/com.xxx.xxxxxxx.MenuActivity}: java.lang.NullPointerException
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.os.Looper.loop(Looper.java:123)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-27 21:01:57.560: E/AndroidRuntime(1316): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 21:01:57.560: E/AndroidRuntime(1316): at java.lang.reflect.Method.invoke(Method.java:507)
02-27 21:01:57.560: E/AndroidRuntime(1316): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-27 21:01:57.560: E/AndroidRuntime(1316): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-27 21:01:57.560: E/AndroidRuntime(1316): at dalvik.system.NativeStart.main(Native Method)
02-27 21:01:57.560: E/AndroidRuntime(1316): Caused by: java.lang.NullPointerException
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
02-27 21:01:57.560: E/AndroidRuntime(1316): at com.xxx.xxxxxxx.BgService.changeIntent(BgService.java:36)
02-27 21:01:57.560: E/AndroidRuntime(1316): at com.xxx.xxxxxxx.MenuActivity.onCreate(MenuActivity.java:33)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-27 21:01:57.560: E/AndroidRuntime(1316): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-27 21:01:57.560: E/AndroidRuntime(1316): ... 11 more