int^s an CanvasView weitergeben

  • Antworten:5
  • Bentwortet
Matthias B.
  • Forum-Beiträge: 3

09.05.2013, 19:19:35 via Website

hallo zusammen,
ich bin kompletter anfänger beim apps programmieren. seit zwei tagen hänge ich jetzt an einem Problem:
in einer activity lass ich mir die bildschirmauflösung zurückgeben :
1public class secActivity extends Activity{
2
3
4 @Override
5 public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(new CanvasView(this));
8 Display display = getWindowManager().getDefaultDisplay();
9 höhe = display.getHeight();
10 screenWidth = display.getWidth();
11 System.out.println(höhe);
12
13}}
bis hier kein Problem. Dann will ich in der Klasse CanvasView auf höhe zugreifen :
1public class CanvasView extends View {
2...
3secActivity seca = new secActivity();
4public int höhe = seca.höhe;
5...
6protected void onDraw(Canvas canvas) {
7System.out.println(höhe);
8...
9}
10}
leider hat höhe hier höhe plötzlich den Wert 0
Wo ist der Fehler ?

Antworten
Matthias B.
  • Forum-Beiträge: 3

09.05.2013, 19:24:33 via Website

sorry, hab was beim kopieren vergessen :
1public class secActivity extends Activity{
2public int höhe;
3public int screenWidth;
4
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(new CanvasView(this));
9Display display = getWindowManager().getDefaultDisplay();
10höhe = display.getHeight();
11 screenWidth = display.getWidth();
12 System.out.println(höhe);
13
14}}

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

09.05.2013, 21:57:33 via Website

Das liegt daran das du die höhe zu früh abfragst, wenn du das in der #onDraw erfragst wird der wert gültig sein

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
impjor
  • Forum-Beiträge: 1.793

10.05.2013, 09:25:02 via App

Deine Lösung ist falsch. Um auf die Höhe zuzugreifen, kannst du nicht eine *neue* MainActivity erstellen. Mach lieber in der MainActivity eine static int hoehe; die du in onCreate füllst und in CanvasView über MainActivity.hoehe ausliest.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

10.05.2013, 09:37:01 via Website

Vieleicht sollte man dem OT mal sagen das man in View nicht Activitys erzeugen sollte. Auch ist es schlechtes Object Design wenn ein View eine Activity kennen muss nur um die höhe auszulesen. In der onDraw sind alle Methoden vorher-gelaufen die dafür nötig sind die höhe
zu ermitteln. Da es sich hier um einen View handelt ist meist e die gesamte Screen Größe nicht relevant, da ein View selbst irgendwas zeichnen will/soll
ist die eigende Dimension sicher die die letztendlich aussage kräftiger ist.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Matthias B.
  • Forum-Beiträge: 3

10.05.2013, 13:35:17 via Website

erstmal vielen Dank für die schnellen Antworten. Nach der umwandlung in static klappt alles wunderbar.

Antworten