1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

2 Klassen - Zugriff regeln

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Fossil89, 12.05.2012.

  1. Fossil89, 12.05.2012 #1
    Fossil89

    Fossil89 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.04.2012
    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....
     
  2. Fossil89, 13.05.2012 #2
    Fossil89

    Fossil89 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.04.2012
    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:
     
  3. Fossil89, 16.05.2012 #3
    Fossil89

    Fossil89 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.04.2012
    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....
     
  4. AppDos, 16.05.2012 #4
    AppDos

    AppDos Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    1
    Registriert seit:
    11.04.2012
    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.
     
  5. Fossil89, 20.05.2012 #5
    Fossil89

    Fossil89 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.04.2012
    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???
     
  6. swordi, 20.05.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
    Fossil89 bedankt sich.
  7. Fossil89, 20.05.2012 #7
    Fossil89

    Fossil89 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.04.2012
    Super,
    Danke da dran lags!!!!
     

Diese Seite empfehlen