0

私が持っているものは私にこれらのエラーを与えます.

04-13 15:01:41.600: E/AndroidRuntime(8431): FATAL EXCEPTION: main
04-13 15:01:41.600: E/AndroidRuntime(8431): java.lang.RuntimeException: Unable to start activity ComponentInfo    {com.omnilabs.alexandernapoles.hl2sticl/com.example.example.example.MainClass}: java.lang.NullPointerException
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.os.Looper.loop(Looper.java:137)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at java.lang.reflect.Method.invokeNative(Native Method)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at java.lang.reflect.Method.invoke(Method.java:511)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at dalvik.system.NativeStart.main(Native Method)
04-13 15:01:41.600: E/AndroidRuntime(8431): Caused by: java.lang.NullPointerException
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.preference.PreferenceManager.getDefaultSharedPreferencesName    (PreferenceManager.java:371)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.preference.PreferenceManager.getDefaultSharedPreferences    (PreferenceManager.java:366)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at com.example.example.example.ShakeEventListener.<init>(ShakeEventListener.java:24)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at com.example.example.example.MainClass.onCreate(StunBatton.java:38)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.Activity.performCreate(Activity.java:4465)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-13 15:01:41.600: E/AndroidRuntime(8431):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
04-13 15:01:41.600: E/AndroidRuntime(8431):     ... 11 more

そして、これは設定に関係する私のシェイクベントリスナークラスの一部です

public class ShakeEventListener extends Application implements SensorEventListener {
public void onCreate(Bundle savedInstanceState) {

    super.onCreate();


}
SharedPreferences preferences =
         PreferenceManager.getDefaultSharedPreferences(this);


private String editTextPref = getString(R.string.preference_key);
int nVar = preferences.getInt(editTextPref, MODE_PRIVATE);
int MIN_FORCE = nVar;
/**
* Minimum times in a shake gesture that the direction of movement needs to
* change.
*/
private static final int MIN_DIRECTION_CHANGE = 15;

/** Maximum pause between movements. */
private static final int MAX_PAUSE_BETHWEEN_DIRECTION_CHANGE = 50000;

などなど

設定.java

package com.example.example.example;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Preferences extends PreferenceActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.layout.preferences);


        }
}

Preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="First Category">
        <EditTextPreference
                android:name="Stun Swing Sensitivity"
                android:summary="This allows you to custom fit your sensitivity."
                android:defaultValue="10"
               android:numeric="integer"
                android:maxLength="200"
                android:title="Sensitivity Level"
                android:key="@string/preference_key" />
        </PreferenceCategory>

</PreferenceScreen>

strings.xml の中に editTextPref を入れます

したがって、基本的には、アクティビティがシェイクを呼び出して onShake(); を使用するクラスファイルで変数を使用する方法を知りたいだけです。シェイク アクティビティから呼び出すには、MIN_FORCE を変数 nVar として保存し、nVar を整数である設定ファイルの設定にします。

助けてください!!!!!!!!!

編集:私はそれがこのコードに関係していることを知っています

      SharedPreferences preferences =
             PreferenceManager.getDefaultSharedPreferences(this);
 String editTextPref = getString(R.string.preference_key);
nVar = preferences.getInt(editTextPref, 10);
4

1 に答える 1

1

getDefaultSharedPreferences呼び出しを内部onCreate(または後のコールバック)に移動する必要があります。オブジェクトの構築時にアクティビティが完全に設定されていないため、外部では機能しません。

public class ShakeEventListener extends Application implements SensorEventListener {

int nVar = 0;
public void onCreate(Bundle savedInstanceState) {

    super.onCreate();
    SharedPreferences preferences =
         PreferenceManager.getDefaultSharedPreferences(this);


    private String editTextPref = getString(R.string.preference_key);
    nVar = preferences.getInt(editTextPref, MODE_PRIVATE);
    int MIN_FORCE = nVar;
}
于 2012-04-13T19:43:35.037 に答える