0

startActivity を使用してインテントを実行しようとすると、どういうわけか nullpointer が発生します。唯一の問題は、別のクラスで同じステートメントを使用していることです。そして、それは問題なく正しく実行されます。これは、エラーの原因となっているコードです。

public class GetPreferences extends Activity {

String result, Gebruikersnaam, Wachtwoord, LicentieCode, DeviceId, GebGUID;
FeatureSettings settings;
StringEntity seParams;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.frmlogin);
    Intent startApp = new Intent(this, actMain.class);
    startApp.putExtra("afterLogin", 1);
    startActivity(startApp);
}

これはエラーログです:

06-14 09:51:41.596: E/AndroidRuntime(28368): FATAL EXCEPTION: main
06-14 09:51:41.596: E/AndroidRuntime(28368): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.koeriers.tools/com.koeriers.erasmus.actMain}: java.lang.NullPointerException
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2172)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread.access$700(ActivityThread.java:151)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.os.Looper.loop(Looper.java:137)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread.main(ActivityThread.java:5293)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at java.lang.reflect.Method.invokeNative(Native Method)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at java.lang.reflect.Method.invoke(Method.java:511)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at dalvik.system.NativeStart.main(Native Method)
06-14 09:51:41.596: E/AndroidRuntime(28368): Caused by: java.lang.NullPointerException
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at com.koeriers.erasmus.actMain.<init>(actMain.java:76)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at java.lang.Class.newInstanceImpl(Native Method)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at java.lang.Class.newInstance(Class.java:1319)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2163)
06-14 09:51:41.596: E/AndroidRuntime(28368):    ... 11 more

そして、これが私のマニフェストのクラスの定義です:

<activity
        android:name="com.koeriers.erasmus.actMain"
        android:label="@string/app_name" >
    </activity>

Log.e ステートメントを追加したので、actMain クラスがロードされていないこともわかっています。そして、それは実行さえされていません。したがって、startActivity 部分である必要がありますが、何が問題なのかわかりません。ですから、皆さんが私を助けてくれることを願っています。

前もって感謝します。

@編集

ここに私のactMain.classがあります

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TLogFile.appendLog("i", "ACTMAIN", "OnCreate Started", true);

    SetDefaultUncaughtExceptionHandler();

    settings = new FeatureSettings(getApplicationContext());
    TTools.DisableTitleBar(this);
    setContentView(R.layout.frmmain);
    TLogFile.appendLog("i", "actMain", "onCreate");

    pbMain = (ProgressBar) findViewById(R.id.pbMain);

    HeaderIcon = (ImageView)findViewById(R.id.HeaderIcon);
    HeaderIcon.setBackgroundColor(Color.parseColor(configfeatures.HeaderIconColor));

    lblHeader = (TextView) findViewById(R.id.lblHeader);
    lblHeader.setText("Order overzicht");
    lblHeader.setBackgroundColor(Color.parseColor(configfeatures.HeaderStateColor));

    linear = (LinearLayout)findViewById(R.id.llMain);
    linear.setBackgroundColor(Color.parseColor(configfeatures.BackgroundColor));

    if (configfeatures.Foto) {
        btnPicture = (ImageButton) findViewById(R.id.btnPicture);
        btnPicture.setVisibility(View.VISIBLE);
        btnPicture.setOnClickListener(this);
    } else {
        btnPicture = (ImageButton) findViewById(R.id.btnPicture);
        btnPicture.setVisibility(View.GONE);
    }

    btnLogout = (ImageButton) findViewById(R.id.btnLogout);
    btnLogout.setOnClickListener(this);

    btnTSync = (ImageButton) findViewById(R.id.btnTSync);
    btnTSync.setOnClickListener(this);

    Boolean bJustLoggedIn = false;
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        bJustLoggedIn = extras.getInt("afterLogin") == 1;
    } else {
        // do nothing
    }

    if (bJustLoggedIn) {
        StartSyncing();
    }

    if (configfeatures.LocatieGegevens){
        StartLocationService();
    }

    // kijken of er een register actie is geweest
    if ((this.getIntent().getExtras() != null)
            && (this.getIntent().getExtras().getString("pushType") != null)
            && (this.getIntent().getExtras().getString("pushType").contains("1"))) {
        TPushHandler pushHandler = new TPushHandler();
        pushHandler.CheckPushMessages(this.getIntent(), this);
    }

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    if(configfeatures.LocatieGegevens){
        StartLocationThread();
    }
4

2 に答える 2

2

StackTrace によると、actMain クラスの 76 行目に NPE があります。オブジェクトが作成されたとき、つまりメソッドを呼び出す前に<init>例外が発生するヒント。おそらくコンストラクターで、またはグローバル変数を初期化しています。onCreate()

Caused by: java.lang.NullPointerException
06-14 09:51:41.596: E/AndroidRuntime(28368):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
06-14 09:51:41.596: E/AndroidRuntime(28368):    at com.koeriers.erasmus.actMain.<init>(actMain.java:76)
于 2013-06-14T08:56:16.940 に答える
0

getApplicationContextの初期化で呼び出しますactMain。(コンストラクターまたはメンバー宣言内)。

それをしてはいけない。が呼び出されるまで、コンテキストは初期化されませんonCreateへの通話をgetApplicationContextに移動しますonCreate()

于 2013-06-14T08:57:17.987 に答える