Probleme bei FrameLayout Maße auslesen

  • 4 Antworten
  • Letztes Antwortdatum
J

javaandroid94

Neues Mitglied
0
Hallo ihr,

ich versuch grad mit Hilfe von dem Buch "Android-Apps entwickeln" bisschen Grundlagen von der Androidprogrammierung zu lernen.
Java lern ich jetzt schon seid 3 Jahren, weswegen ich denke ich sollte eigentlich den Fehler bei mir sehen, aber iwie klappte leider nicht.

Ich hab en Framelayout für dieses Mückenspiel von dem ich die Maße (Höhe,Breite)auslesen soll. Hab des Über :

frameLayoutObjekt.getWidth(); versucht aber er gibt mir immer die länge bzw höhe "0" an. Woran kann des liegen?

Danke schonmal für Hilfe.

PS: kann ich hier iwie auch Code posten? Also z.B: mit [Java]...[/Java]?




FrameLayout spielbereich = (FrameLayout) findViewById(R.id.spielbereich);


hoeheFeld = spielbereich.getHeight();
breiteFeld = spielbereich.getWidth();

if(hoeheFeld ==0)
{

spielbereich.setBackgroundColor(Color.BLACK);
}

//So Sieht des aus, die abfrage war blos zum prüfen wieso der Compiler meckert

So sieht die Oberfläche aus



Und so wenn ich des FrameLayout mit Background.Black setz. D.h. des Framelayout ist ja vorhanden aber der sagt mir die länge ist 0 (Sieht man oben recht des ist " laengerFrame"+ nefl + "laengeBilddatei)
 
Zuletzt bearbeitet:
1.
Code:
[code ]
//dein code
[/code ]
← so postest du code

2. Könntest du die ganze klasse zeigen, bzw logcat/debugger info?

Sent from my GT-I9100 using Android-Hilfe.de App
 
Code:
private void eineMueckeAnzeigen() {
    	
    	int breite = spielbereich.getWidth();
    	int hoehe = spielbereich.getHeight();
    	
    	ImageView muecke = new ImageView(this);
    	muecke.setImageResource(R.drawable.mueckev);
    	muecke.setTag(R.id.geburtsdatum, new Date());
    	muecke.setOnClickListener(this);
    	int muecke_breite = (int)Math.round(massstab*50);
		int muecke_hoehe = (int)Math.round(massstab*42);
    	int links = zufallsgenerator.nextInt(breite-muecke_breite);
    	int oben = zufallsgenerator.nextInt(hoehe-muecke_hoehe);

    	FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(muecke_breite,muecke_hoehe);
		params.leftMargin = links;
		params.topMargin = oben;
    	params.gravity= Gravity.TOP + Gravity.LEFT;
    	spielbereich.addView(muecke,params);
    	
    	TextView t = (TextView) findViewById(R.id.points);
    	t.setText("Die breite ist" + breite);
    }

die Java-Klasse, hab die direkt von der Buch-Cd übernommen, nur am Schluss des mit TextView zum Testen selber eingeschrieben. die OnCreat-Methode:

Code:
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game);
        spielbereich = (FrameLayout) findViewById(R.id.spielbereich);
        massstab = getResources().getDisplayMetrics().density;
        spielStarten();
        //eineMueckeAnzeigen();
        
    }
wenn ich des "eineMueckeAnzeigen();" nicht auskommender bekomm ich die Fehlermeldung:

Code:
10-29 15:30:42.337: E/AndroidRuntime(432): FATAL EXCEPTION: main
10-29 15:30:42.337: E/AndroidRuntime(432): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gfs/com.example.gfs.GameActivity}: java.lang.NullPointerException
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.os.Looper.loop(Looper.java:123)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at java.lang.reflect.Method.invoke(Method.java:507)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at dalvik.system.NativeStart.main(Native Method)
10-29 15:30:42.337: E/AndroidRuntime(432): Caused by: java.lang.NullPointerException
10-29 15:30:42.337: E/AndroidRuntime(432): 	at com.example.gfs.GameActivity.eineMueckeAnzeigen(GameActivity.java:125)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at com.example.gfs.GameActivity.onCreate(GameActivity.java:43)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-29 15:30:42.337: E/AndroidRuntime(432): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-29 15:30:42.337: E/AndroidRuntime(432): 	... 11 more
aus irgend nem Grund steht da "unable to start aktivity" ? aber die wird ja bei mir angezeigt, bzw wenn ich den methodenaufruf drin lass, stürzt die app ab

In zeile 125 ist übrigens :

Code:
 int links = zufallsgenerator.nextInt(breite-muecke_breite);

die variable breite, welche durch FrameLayout.getWidth(); eigentlich kommen sollte, wird iwie nicht übergeben, deswegen der Fehler oder?
 
Zuletzt bearbeitet:
Ja genau deswegen der Fehler. Schon gegooglet bezüglich FrameLayout & getWidth? Vlt gibt es da bugs bei bestimmten API versionenn und/oder einen Workaround

Sent from my GT-I9100 using Android-Hilfe.de App
 
jub hab ich, aber die machen des auch alle mit .getWidth(); :/
 
Zurück
Oben Unten