Methode (View view) über onCreate aufrufen

P

pascals

Neues Mitglied
0
Hallo,

bin momentan dabei ein wenig Erfahrung in der Entwicklung von Android-Apps zu sammeln und programmiere meine erste eigene App. Bin dabei jedoch leider auf ein Problem gestoßen, bei welchem ich nicht weiß, wie ich das beheben kann.

Ich habe eine Methode erstellt, die Buttons mit einem Inhalt erstellt, welcher in der Datenbank abgespeichert ist. Diese benötigt View view als Parameter:

Code:
public void getData(View view) {

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams paramsII = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 3);


        Button create_button = new Button(this);

        ImageView line = new ImageView(this);
        create_newProfile_Button(create_button, 100, params, paramsII, 100, 80, 0, 0, 18, "NEW PROFILE", line);
[...]

}

Das ist natürlich nicht alles, was in der Methode steht, aber läuft alles ungefähr nach dem Schema ab, nur später in einer for-Schleife und halt mir Daten aus der Datenbank.

Wenn ich diese Methode über einen Button abrufe funktioniert auch alles einwandfrei.

Wenn ich es jedoch versuche in onCreate abzurufen (mit getData()) fehlt da natürlich ein Parameter.

Nehme ich das View view raus, lösche also den Parameter, kommt folgender Laufzeit-Fehler:

Code:
08-24 16:46:49.169    5992-5992/de.ps2406.apc.autoprofile E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: de.ps2406.apc.autoprofile, PID: 5992
    java.lang.RuntimeException: Unable to start activity ComponentInfo{de.ps2406.apc.autoprofile/de.ps2406.apc.autoprofile.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.addView(android.view.View)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:155)
            at android.app.ActivityThread.main(ActivityThread.java:5696)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.addView(android.view.View)' on a null object reference
            at de.ps2406.apc.autoprofile.MainActivity.create_newProfile_Button(MainActivity.java:169)
            at de.ps2406.apc.autoprofile.MainActivity.getData(MainActivity.java:77)
            at de.ps2406.apc.autoprofile.MainActivity.onCreate(MainActivity.java:58)
            at android.app.Activity.performCreate(Activity.java:5958)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:155)
            at android.app.ActivityThread.main(ActivityThread.java:5696)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

Wie kann ich diese Methode beim Erstellen der Activity erfolgreich aufrufen?

Danke für eure Hilfe!

mfG Pascal
 
Hi,

ich würde an deiner Stelle die Views inflaten. Das hat Vorteile bei der Wartung und das MVC-Pattern kann viel besser eingehalten werden.
Deine Probleme könnten sich dann auch auflösen. ( Ich verstehe dein Problem ehrlich gesagt nicht)
 
Kardroid schrieb:
Hi,

ich würde an deiner Stelle die Views inflaten. Das hat Vorteile bei der Wartung und das MVC-Pattern kann viel besser eingehalten werden.
Deine Probleme könnten sich dann auch auflösen. ( Ich verstehe dein Problem ehrlich gesagt nicht)

Mit inflaten meinst du
Code:
LayoutInflater inflater = (LayoutInflater)   this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(R.layout.fragment_profile, null);
        getData(v);

oder wie?

Hab ich versucht, funktioniert leider nach wie vor nicht.

Mein Problem ist einfach, wie ich eine (View view) Prozedur im onCreate aufrufen kann...

Hoffe du kannst mir vielleicht doch noch weiterhelfen :)
 
Hallo,
ich denke Kardroid möchte auf einen Adapter bzw. auf eine RecyclerView hinaus. So würde ich es jedenfalls angehen... Gibt auch hinsichtlich der Performance einen ganz gewaltigen(!!) Schub. ;)
 
missspelled schrieb:
Hallo,
ich denke Kardroid möchte auf einen Adapter bzw. auf eine RecyclerView hinaus. So würde ich es jedenfalls angehen... Gibt auch hinsichtlich der Performance einen ganz gewaltigen(!!) Schub. ;)

Könntest du mir vlt. einen Link schicken, bei welchem das erklärt wird? :) Hab davon noch nie was gehört Oo
 
Slidenerd hat dazu eine super Tutorial-Serie gemacht.
Auch wenn in vielen Youtube-Videos erfahrungsgemäß die Inhalte nicht umfassend genug erklärt werden, kann ich dir versichern, dass sich die 5-6 Videos, die er dazu gemacht hat, absolut lohnen - zur Not 2x ansehen und deine App wird es dir später danken.
 
  • Danke
Reaktionen: Kardroid
@Misspelled: Genau das meinte ich.
Das Video kannte ich noch gar nicht. Danke, werde es mir auch mal anschauen.
 
  • Danke
Reaktionen: missspelled

Ähnliche Themen

Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.123
Helmut1A
Helmut1A
S
Antworten
4
Aufrufe
4.336
mblaster4711
mblaster4711
P
Antworten
0
Aufrufe
553
Pascppal
P
Zurück
Oben Unten