2 Klassen - Zugriff regeln

F

Fossil89

Neues Mitglied
0
Nabend zusammen,

ich habe eine Activity Klasse die ja autaomatisch implementiert wird und eine selbsterstellte "Test" Klasse. In dieser "Test" Klasse lege ich eine Datenbank (SQLite) an mithilfe der Methode

private void onCreateDBAndDBTabled()

Nun möchte ich diese Methode in der Activity Klasse aufrufen, bekomme dabei aber immer eine NullPointerException.

Ich erhalte keinerlei Fehlermeldung in Eclipse selbe, sondern erst wenn ich den Emulator starte....
 
Habs leider bisher immer noch nicht hinbekommen, es kann doch ned so schwer sein diesen Zugriff zu regeln, irgendwie liegt das an dieser blöden Activity.... :glare:
 
Ich habe mir nochmal andere Code Bsp. angeschaut und festgestellt das viele einfach den gesamten Code in 1 Activity Klasse stecken, ist das wircklich so vorgesehen.
Ich finde es übersichtlicher wenn ich zB. meine Datenbank Statements in eine extra Klasse schreiben könnte und die dann mit meiner Activity verknüpfen kann. Leider bekomm ich das immer noch nicht hin....
 
Es ist natürlich nicht vorgesehen alles in eine Klasse zu schreiben, wie un-oo wär das denn...
Schreib doch einfach mal deinen Code(oder zumindest den entsprechenden Teil) hier rein, damit wir dir besser helfen können. So ist es sinnloses raten. Achja und die komplette Fehlermeldung, da steht sicher mehr als nur NullpointerException.
 
Also hier mal mein Code der ActivityKlasse:

Code:
public class CaptnCookActivity extends Activity {
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        
        Testklasse te = new Testklasse();
        // Bei diesem Aufruf kommt eine NullpointerException
        te.onCreateDBAndDBTabled(this);
            setContentView(te.getNeueView(this));
    }
und hier der Code der Testklasse:
Code:
public class Testklasse{

    // Beim Aufruf dieser Methode aus der ActivityKlasse folgt eine NullpointerException
    public void onCreateDBAndDBTabled(Context con) {
        SQLiteDatabase myDB = null;
        try {
            myDB = con.openOrCreateDatabase("CaptnTest", (Integer) null, null);
            myDB.execSQL("CREATE TABLE .... ");
        } finally {
             if (myDB != null)
                  myDB.close();
        }    
    }

    // Diese Methode kann ich fehlerfrei aus der ActivityKlasse aufrufen
    public TextView getNeueView(Context con){
        TextView tv = new TextView(con);
        tv.setText("Hallo das kommt von der Testklasse ");
        return tv;
    }
}
Beim Aufruf der onCreateDBAndDBTabled(Context con) - Methode erhalte ich dieses Log:

05-20 12:49:00.565: D/AndroidRuntime(485): Shutting down VM
05-20 12:49:00.565: W/dalvikvm(485): threadid=1: thread exiting with uncaught exception (group=0x40014760)
05-20 12:49:00.678: E/AndroidRuntime(485): FATAL EXCEPTION: main
05-20 12:49:00.678: E/AndroidRuntime(485): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.Captn.Cook/my.Captn.Cook.CaptnCookActivity}: java.lang.NullPointerException
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.os.Handler.dispatchMessage(Handler.java:99)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.os.Looper.loop(Looper.java:126)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread.main(ActivityThread.java:3997)
05-20 12:49:00.678: E/AndroidRuntime(485): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 12:49:00.678: E/AndroidRuntime(485): at java.lang.reflect.Method.invoke(Method.java:491)
05-20 12:49:00.678: E/AndroidRuntime(485): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-20 12:49:00.678: E/AndroidRuntime(485): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-20 12:49:00.678: E/AndroidRuntime(485): at dalvik.system.NativeStart.main(Native Method)
05-20 12:49:00.678: E/AndroidRuntime(485): Caused by: java.lang.NullPointerException
05-20 12:49:00.678: E/AndroidRuntime(485): at my.Captn.Cook.Testklasse.onCreateDBAndDBTabled(Testklasse.java:15)
05-20 12:49:00.678: E/AndroidRuntime(485): at my.Captn.Cook.CaptnCookActivity.onCreate(CaptnCookActivity.java:17)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
05-20 12:49:00.678: E/AndroidRuntime(485): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
05-20 12:49:00.678: E/AndroidRuntime(485): ... 11 more

Könnt ihr mir sagen an was das liegt???
 
con.openOrCreateDatabase("CaptnTest", (Integer) null, null);

hmm das sieht doch irgendwie sehr komisch aus oder ?

1) du übergibst null
2) du castest dieses null noch auf Integer

schau mal, dass du das so schreibst, wie es sein soll
 
  • Danke
Reaktionen: Fossil89
Super,
Danke da dran lags!!!!
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
127
swa00
swa00
R
  • RalfKahl
Antworten
4
Aufrufe
181
RalfKahl
R
A
  • Gesperrt
  • AGWInternational
Antworten
8
Aufrufe
951
swa00
swa00
Zurück
Oben Unten