- Forum-Beiträge: 239
23.04.2014, 21:28:35 via Website
23.04.2014 21:28:35 via Website
Guten Abend zusammen,
ich mache zurzeit den Fernlehrgang zum App-Programmierer bei der SGD. Ich komme mit einer Aufgabe absolut nicht weiter, ich sitze schon Stunden und versuche den Fehler zu finden.
Es geht um folgendes: Das Thema lautet Benutzeroberflächen und im Speziellen geht es um den Aufbau eines AbsoluteLayouts. Ich weiß, dass es eigentlich veraltet ist, aber über Sinn und Zweck möchte ich hier nicht diskutieren, denn es macht einen größeren Teil des Lernheftes aus.
Aufgabenstellung: Das Layout soll so aussehen:
Damit die Buttons allerdings die gleiche Größe haben, soll diese über die Activity-Klasse abgefragt werden. Die Logging-Ausgaben sollen dann alle den Wert "0" ausgeben. Das ist korrekt, da die Größen der Objekte erst nach Fertigstellung des Layouts feststehen.
Hier der Code:
package android.and04;
import java.util.Vector; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.ImageView;
public class AbsoluteActivity extends Activity {
private Button btLinear, btTable, btRelative, btFrame;
private Vector<Button> buttons = new Vector<Button>();
private ImageView ivLinear, ivTable, ivRelative, ivFrame;
private Vector<ImageView> icons = new Vector<ImageView>();
private static final String TAG = AbsoluteActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_absolute);
// alle Views referenzieren und in zwei Vector-Objekte sortieren:
btLinear = (Button) this.findViewById(R.id.button5_linearlayout);
buttons.add(btLinear);
btTable = (Button) this.findViewById(R.id.button1_tablelayout);
buttons.add(btTable);
btRelative = (Button) this.findViewById(R.id.button2_relativeLayout);
buttons.add(btRelative);
btFrame = (Button) this.findViewById(R.id.button4_framelayout);
buttons.add(btFrame);
ivLinear = (ImageView) this.findViewById(R.id.img_iconL);
icons.add(ivLinear);
ivTable = (ImageView) this.findViewById(R.id.img_iconT);
icons.add(ivTable);
ivRelative = (ImageView) this.findViewById(R.id.img_iconR);
icons.add(ivRelative);
ivFrame = (ImageView) this.findViewById(R.id.img_iconF);
icons.add(ivFrame);
this.getSizes();
}
// TODO hier noch Logging ergänzen!
private void getSizes(){
// Ermittlung der maximalen Button-Breite
int tempWidth = 0;
for (Button button : buttons){
Log.d(TAG, button.getText() + "-Width: " + button.getWidth());
tempWidth = Math.max(tempWidth, button.getWidth());
}
// Ermittlung der Icon-Größe
Log.d(TAG, "MaxButtonWidth: " + tempWidth);
int iconWidth = icons.elementAt(0).getWidth();
int iconHeight = icons.elementAt(0).getHeight();
Log.d(TAG, "Icon-Size: " + iconWidth + " x " + iconHeight);
}
}
Ich bekomme jedoch eine RuntimeExeption mit NullPointerExeption geworfen und die App stürzt ab:
Seltsam ist auch die Meldung, wenn ich mit der Maus im Code über "this" fahre:
Sobald ich den selbst geschriebenen Code entferne und lediglich die onCreate-Methode aufrufe, läuft alles. Was mache ich falsch?
Ich hoffe, ihr könnt mir helfen ...
Liebe Grüße, Babette