Import-Klasse, die sich der Aktivität, ohne einen Blick

Habe ich eine LoginActivity.java die Importe VersionCheck.java.

VersionCheck.java hat eine Klasse VersionCheck, erstreckt sich die Aktivität um den Zugang zu getPackageManager().

In der LoginActivity bekomme ich ein Objekt der Klasse VersionCheck, und die run-Methode getVersionName zum abrufen der versionName der Anwendung.

Wenn ich die Anwendung ausführen, bekomme ich eine java.lang.NullPointerException bei pinfo = getPackageManager().getPackageInfo(packageName, 0); im getVersionName Methode.

Wenn ich die getVersionName Methode in meiner main-Klasse der code funktioniert, aber ich möchte erstellen Sie eine separate Klasse mit dieser Methode, wie ich diese Methode Häufig in Anwendungen.

Siehe code unten.

LoginActivity.java

package com.itse.htsurvey;

import com.itse.tools.*;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class LoginActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        displayVersionName();           

    }

    //---------------------------------------------------------------------------------------------------------
    //retrieves version name and displays it
    //---------------------------------------------------------------------------------------------------------
    private void displayVersionName() {

        //object of class versioncheck
        VersionCheck vc = new VersionCheck();

        TextView tvVersion = (TextView) findViewById(R.id.tvVersion);
        tvVersion.setText("Version " + vc.getVersionName(getPackageName()));
    }


}

VersionCheck.java

package com.itse.tools;

import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;

public class VersionCheck extends Activity{

    //---------------------------------------------------------------------------------------------------------
    //Retrieves the version name of the application and returns to method caller
    //---------------------------------------------------------------------------------------------------------
    public String getVersionName(String packageName) {

        PackageInfo pinfo = null;
        try {
            pinfo = getPackageManager().getPackageInfo(packageName, 0);
        } catch (NameNotFoundException e) {         
            e.printStackTrace();
        }

        return pinfo.versionName;    
    }

}

Fehlermeldung

05-24 13:07:23.146: W/dalvikvm(888): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
05-24 13:07:23.166: E/AndroidRuntime(888): FATAL EXCEPTION: main
05-24 13:07:23.166: E/AndroidRuntime(888): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.itse.htsurvey/com.itse.htsurvey.LoginActivity}: java.lang.NullPointerException
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.os.Looper.loop(Looper.java:137)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread.main(ActivityThread.java:4424)
05-24 13:07:23.166: E/AndroidRuntime(888):  at java.lang.reflect.Method.invokeNative(Native Method)
05-24 13:07:23.166: E/AndroidRuntime(888):  at java.lang.reflect.Method.invoke(Method.java:511)
05-24 13:07:23.166: E/AndroidRuntime(888):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-24 13:07:23.166: E/AndroidRuntime(888):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-24 13:07:23.166: E/AndroidRuntime(888):  at dalvik.system.NativeStart.main(Native Method)
05-24 13:07:23.166: E/AndroidRuntime(888): Caused by: java.lang.NullPointerException
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:86)
05-24 13:07:23.166: E/AndroidRuntime(888):  at com.itse.tools.VersionCheck.getVersionName(VersionCheck.java:16)
05-24 13:07:23.166: E/AndroidRuntime(888):  at com.itse.htsurvey.LoginActivity.displayVersionName(LoginActivity.java:29)
05-24 13:07:23.166: E/AndroidRuntime(888):  at com.itse.htsurvey.LoginActivity.onCreate(LoginActivity.java:16)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.Activity.performCreate(Activity.java:4465)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-24 13:07:23.166: E/AndroidRuntime(888):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-24 13:07:23.166: E/AndroidRuntime(888):  ... 11 more
InformationsquelleAutor Rynardt | 2012-05-24
Schreibe einen Kommentar