Fehler in dem Staumelder aus dem Arno Becker Buch?

D

dermattn

Fortgeschrittenes Mitglied
1
hi also ich wühl mich grad durch die anfänge von android...
habe mir dafür dieses buch gekauft...

ich habe das erste beispiel 1:1 übernommen aber irgendwie schießt sich die app selber ab...da ich nen blutiger androidanfänger bin weiß ich nicht warum...
kann mir da vllt jemand helfen

HIER mein (noch) miniprojekt
 
Haste mal im Dalvik Debug Monitor geschaut?
Hier der Auszug:
I/ActivityManager( 136): Start proc de.staumelder for activity de.staumelder/.StaumeldungErfassen: pid=5487 uid=10062 gids={1015}
D/ddm-heap( 5487): Got feature list request
D/AndroidRuntime( 5487): Shutting down VM
W/dalvikvm( 5487): threadid=3: thread exiting with uncaught exception (group=0x4001e1c0)
E/AndroidRuntime( 5487): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 5487): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.staumelder/de.staumelder.StaumeldungErfassen}: java.lang.RuntimeException: Binary XML file line #12: You must supply a layout_width attribute.
E/AndroidRuntime( 5487): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
E/AndroidRuntime( 5487): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
E/AndroidRuntime( 5487): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
E/AndroidRuntime( 5487): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
E/AndroidRuntime( 5487): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 5487): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 5487): at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime( 5487): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 5487): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 5487): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime( 5487): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime( 5487): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 5487): Caused by: java.lang.RuntimeException: Binary XML file line #12: You must supply a layout_width attribute.
E/AndroidRuntime( 5487): at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:438)
E/AndroidRuntime( 5487): at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3433)
E/AndroidRuntime( 5487): at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3513)
E/AndroidRuntime( 5487): at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1265)
E/AndroidRuntime( 5487): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1191)
E/AndroidRuntime( 5487): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:44)
E/AndroidRuntime( 5487): at android.view.LayoutInflater.rInflate(LayoutInflater.java:619)
E/AndroidRuntime( 5487): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime( 5487): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime( 5487): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime( 5487): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313)
E/AndroidRuntime( 5487): at android.app.Activity.setContentView(Activity.java:1620)
E/AndroidRuntime( 5487): at de.staumelder.StaumeldungErfassen.onCreate(StaumeldungErfassen.java:13)
E/AndroidRuntime( 5487): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
E/AndroidRuntime( 5487): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
E/AndroidRuntime( 5487): ... 11 more
Da ist dein Problem: java.lang.RuntimeException: Binary XML file line #12: You must supply a layout_width attribute.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: dermattn
sehr gut ja das hat geholfen...das problem ist dann ja klar...danke...hab mich schon gewundert das ich noch kein log gefunden habe

dummer fehler den ich immer wieder übersehen habe...schäm mich bisschen :D
 
Zuletzt bearbeitet:
Ach, ist doch kein Problem, Fehler sind da um daraus zu lernen.
Um die Logs angezeigt zu bekommen, gehste in dein SKD Verzeichnis, dann in tools und dann rufst du die ddms.bat auf und dann geht der Dalvik Debug Monitor auf.
Dort sieht du was so alles passiert. Dort kannst du auch screenshots von deinem Handy machen, also des aktuellen screens. Klick einfach mal ein bissel rum, ist ganz cool das Teil.
 
Bin totaler Anfänger in der Android Entwicklung. Kann zwar ganz gut Entwicklung machen für SAP aber hier hänge ich schon am einfachsten Bsp. :-(

Kann mir jemand helfen ? Orientiere mich am Buch von Arno Becker. Aber schon die erste App funktioniert nicht und ich finde den Fehler nicht heraus. Syntaktisch scheint die App in Ordnung zu sein. Aber nach dem Run zeigt mit der AVD:

... the Application has stopped unexpectetly. Please try again.

[2010-09-04 15:18:04 - StauMelder] Android Launch!
[2010-09-04 15:18:04 - StauMelder] adb is running normally.
[2010-09-04 15:18:04 - StauMelder] Performing ch.androidbuch.staumelder.StauErfassen activity launch
[2010-09-04 15:18:04 - StauMelder] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'MY_AVD'
[2010-09-04 15:18:04 - StauMelder] WARNING: Application does not specify an API level requirement!
[2010-09-04 15:18:04 - StauMelder] Device API version is 7 (Android 2.1-update1)
[2010-09-04 15:18:05 - StauMelder] Application already deployed. No need to reinstall.
[2010-09-04 15:18:05 - StauMelder] Starting activity ch.androidbuch.staumelder.StauErfassen on device
[2010-09-04 15:18:07 - StauMelder] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=ch.androidbuch.staumelder/.StauErfassen }


Hier der Code:

package ch.androidbuch.staumelder;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class StauErfassen extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
// Listeneinträge konfigurieren
Spinner s1 = (Spinner)findViewById(R.id.stauUrsache);
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(
this, R.array.stauUrsachen,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);

}
}



Main Layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />

<RadioGroup android:id="@+id/position"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/stauAnfang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stauanfang" />

<RadioButton android:id="@+id/stauEnde"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stauende" />
</RadioGroup>

<Spinner android:id="@+id/stauUrsache"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true" />
</LinearLayout>

arrays.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="stauUrsachen">
<item>Unfall</item>
<item>Baustelle</item>
<item>Gaffer</item>
<item>Überlastung</item>
<item>Sonstige</item>
</array>
</resources>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, StauErfassen!</string>
<string name="app_name">Android Staumelder</string>
</resources>
 
Geh doch auch mal bitte in Eclipse oben auf Window-->Open Perspective-->DDMS, da findest du dann irgendwo die Logcat-Sachen. Wenn du das hier postest können wir dir am schnellsten helfen, und du dir wahrscheinlich sogar selbst.
 
ich habe das gleiche Problem! habe den Code 1:1 aus dem Buch kopiert!
bei mir beschwert er sich an der stelle "this, R.array.stauUrsachen,"

array ist rot unterstrichen mit der Fehlermeldung "array can not be resolved or is not a field"!

der rest ist identisch mit meinem vorredner! kann es mir nicht erklären!

für hilfe wäre ich sehr dankbar!

ich habe auch über windows open perspective ddbs versucht was rauszukriegen aber alle felder sind dort leer!

public class StaumeldungErfassen extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
// Listeneinträge konfigurieren
Spinner s1 = (Spinner)findViewById(R.id.stauUrsache);
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(
this, R.array.stauUrsachen,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);

}
}

beste grüße j1mpans3
 
Es gibt tatsächlich nicht wenige Fehler in dem Buch...könnt ihr ja mal hier vergleichen: Androidbuch | Errata
 
j1mpans3 schrieb:
ich habe das gleiche Problem! habe den Code 1:1 aus dem Buch kopiert!
bei mir beschwert er sich an der stelle "this, R.array.stauUrsachen,"

array ist rot unterstrichen mit der Fehlermeldung "array can not be resolved or is not a field"!

der rest ist identisch mit meinem vorredner! kann es mir nicht erklären!

für hilfe wäre ich sehr dankbar!

ich habe auch über windows open perspective ddbs versucht was rauszukriegen aber alle felder sind dort leer!

public class StaumeldungErfassen extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
// Listeneinträge konfigurieren
Spinner s1 = (Spinner)findViewById(R.id.stauUrsache);
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(
this, R.array.stauUrsachen,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);

}
}

beste grüße j1mpans3



hast du die app überhaupt gebuildet?
 

Ähnliche Themen

R
  • Robby1950
2
Antworten
23
Aufrufe
956
Robby1950
R
D
Antworten
3
Aufrufe
438
jogimuc
J
B
Antworten
6
Aufrufe
1.016
jogimuc
J
Zurück
Oben Unten