Image View adden

  • 6 Antworten
  • Letztes Antwortdatum
L

LoLmAnxD1998

Ambitioniertes Mitglied
0
Ich habe versucht ein ImageVIew ind einem FrameView anzeigen zu lassen, wenn man einen Button drückt. Es stürzt aber schon bei onCreate ab. Wo ist der Fehler ? :cursing:
Code:
private float masstab;
	private Button testButton;
	private int id;
	private int breite;
	private int hoehe;
	private int links;
	private int oben;
	private Random random = new Random();
	private FrameLayout spielbereich;
	private ImageView view;
	private FrameLayout.LayoutParams params;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_smileywar);

		testButton = (Button) findViewById(R.id.testButtonZ);
		testButton.setOnClickListener(this);
		spielbereich = (FrameLayout) findViewById(R.id.spielbereich);
		breite = spielbereich.getWidth();
		hoehe = spielbereich.getHeight();
		masstab = getResources().getDisplayMetrics().density;
		int view_breite = (int) Math.round(masstab * 99);
		int view_hoehe = (int) Math.round(masstab * 27);
		params = new FrameLayout.LayoutParams(view_breite, view_hoehe);
		view = new ImageView(this);
		view.setImageResource(R.drawable.smiley1);
		links = random.nextInt(breite - view_breite);
		oben = random.nextInt(hoehe - view_hoehe);
		params.leftMargin = links;
		params.topMargin = oben;
		params.gravity = Gravity.TOP + Gravity.LEFT;

	}

	@Override
	public void onClick(View arg0) {
		id = arg0.getId();
		if (id == R.id.testButtonZ)
			smileyAnzeigen();
	}

	private void smileyAnzeigen() {

		spielbereich.addView(view, params);

	}

}
 
Was sagt denn die Fehlermeldung?
 
Also ich werde ja nie aus CatLogs schlauer aber hier mal die Meldung:
Code:
07-31 16:33:47.264: D/AndroidRuntime(664): Shutting down VM
07-31 16:33:47.264: W/dalvikvm(664): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
07-31 16:33:47.304: E/AndroidRuntime(664): FATAL EXCEPTION: main
07-31 16:33:47.304: E/AndroidRuntime(664): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tr.smileywar/com.tr.smileywar.SmileyWarActivity}: java.lang.IllegalArgumentException
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread.access$600(ActivityThread.java:130)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.os.Looper.loop(Looper.java:137)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at dalvik.system.NativeStart.main(Native Method)
07-31 16:33:47.304: E/AndroidRuntime(664): Caused by: java.lang.IllegalArgumentException
07-31 16:33:47.304: E/AndroidRuntime(664): 	at java.util.Random.nextInt(Random.java:187)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at com.tr.smileywar.SmileyWarActivity.onCreate(SmileyWarActivity.java:44)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.Activity.performCreate(Activity.java:5008)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-31 16:33:47.304: E/AndroidRuntime(664): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
07-31 16:33:47.304: E/AndroidRuntime(664): 	... 11 more


Der ursprüngliche Beitrag von 18:35 Uhr wurde um 18:39 Uhr ergänzt:

LogCats* Sorry ich hab ne App die heißt CatLog seit dem sag ich das immer falsch rum :D
 
Was steht in deiner SmileyWarActivity in Zeile 44?
 
Code:
links = random.nextInt(breite - view_breite);
 
Kann es sein, dass da eine negative Zahl bei rum kommt, wenn du view_breite von breite subtrahierst?

bzw was kommt da raus?
das muss größer als 0 sein.
 
Also "breite" und "hoehe" werden so ermittelt :
Code:
breite = spielbereich.getWidth();
		hoehe = spielbereich.getHeight();
ich hab mir das in ein TextView ausgeben lassen und es kommt beides mal 0 raus. "spielfeld" ist ein FrameLayout das eig. größer als 0 sein muss ? :cursing:
 
Zurück
Oben Unten