Ich verzweifle an meinem Layout

Micka

Micka

Fortgeschrittenes Mitglied
1
Hallo,

ich habe ein Problem mit meinem wie ich finde simplen Layout.

Wenn die App fertig ist soll das ganze ein ziemlich einfach gehaltenes Haushaltsbuch werden. In Java habe ich das schonmal realisiert, aber in "Android" will es mir nicht gelingen.

Die erste Seite der App funktioniert soweit einwandfrei. Wenn ich dann auf den Button drücke der zu einer späteren Eingabemaske führen soll machts peng. Ich vermute mal das das ganze etwas mit dem <Spinner> zu tun hat, da es läuft wenn ich alle <Spinner> auskommentiere. Sobald ich auch nur einen der <Spinner> wieder "einkommentiere" machts Peng!

Hier erstmal das Layout:
PHP:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
>
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Geben sie ein Datum an"
        />
    </TableRow>
<!--     Datum -->
    <TableRow>
        <Spinner
            android:id="@+id/datum_Tag"
            android:layout_width="fill_parent"
        android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:entries="@array/tag"
            android:entryValues="@array/tag_wert"
        />
        <!-- <Spinner
            android:id="@+id/datum_Monat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:entries="@array/monat"
            android:entryValues="@array/monat_wert"
        /> -->
        <!-- <Spinner
            android:id="@+id/datum_Jahr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:entries="@array/jahr"
            android:entryValues="@array/jahr_wert"
        /> -->
    </TableRow>
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Zweck:"
        />
        <EditText
            android:id="@+id/zweck"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                android:inputType="text"
        />
    </TableRow>
    
    <!-- <Button
        android:id="@+id/button_eintragen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Eintragen"
    /> -->
</TableLayout>
Hier noch die zugehörige Activity:
PHP:
package micka.finanzen;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;





public class EintragHinzufuegenActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.eintraghinzufuegenlayout);
    }
}
Und hier die OutLine von LogCat

12-30 06:25:04.488: E/AndroidRuntime(253): Uncaught handler: thread main exiting due to uncaught exception
12-30 06:25:04.499: E/AndroidRuntime(253): java.lang.NullPointerException
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.View.measure(View.java:7964)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.TableRow.getColumnsWidths(TableRow.java:308)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.TableLayout.findLargestCells(TableLayout.java:497)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.TableLayout.measureVertical(TableLayout.java:462)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.TableLayout.onMeasure(TableLayout.java:428)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.View.measure(View.java:7964)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.View.measure(View.java:7964)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.View.measure(View.java:7964)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.View.measure(View.java:7964)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.os.Handler.dispatchMessage(Handler.java:99)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.os.Looper.loop(Looper.java:123)
12-30 06:25:04.499: E/AndroidRuntime(253): at android.app.ActivityThread.main(ActivityThread.java:4363)
12-30 06:25:04.499: E/AndroidRuntime(253): at java.lang.reflect.Method.invokeNative(Native Method)
12-30 06:25:04.499: E/AndroidRuntime(253): at java.lang.reflect.Method.invoke(Method.java:521)
12-30 06:25:04.499: E/AndroidRuntime(253): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-30 06:25:04.499: E/AndroidRuntime(253): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-30 06:25:04.499: E/AndroidRuntime(253): at dalvik.system.NativeStart.main(Native Method)
12-30 06:25:04.518: I/dalvikvm(253): threadid=7: reacting to signal 3
12-30 06:25:04.518: E/dalvikvm(253): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
12-30 06:25:06.277: I/Process(253): Sending signal. PID: 253 SIG: 9
Ist meine erste Android App, vielleicht hab ich ja einen echt dummen Fehler gemacht und deswegen knallen mir die Exceptions um die Ohren.
Wäre echt cool wenn Jemand von euch den fehler findet. Ich selbst werde auch weiter daran arbeiten und sollte ich es behoben haben natürlich die Lösung hier posten.

Im angehangenen Archiv findet ihr das Eclipse Projekt sowie eine Log.txt.

Im Voraus schonmal Danke für die Aufmerksamkeit und eventuelle Hilfe :)
 

Anhänge

  • FinanzenApp.zip
    58,2 KB · Aufrufe: 68
Okay, mittlerweile habe ich rausbekommen das es wohl an dem Array liegt. Warum wieso weshalb da eine NullPointerException geschmissen wird verstehe ich wiederrum nicht.
 
Das Problem ist nun gefunden und gelöst.
Bevor ich mich an meine eigene App gesetzt habe, habe ich anhand eines Buches eine BeispielAPP geschrieben. Darin wurden auch <Spinner> verwendet. In der Arrays.xml dieses Projektes habe ich die Arrays Folgendermaßern definiert.

PHP:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <array name="ust_anzeige">
          <item>19 Prozent</item>
          <item>16 Prozent</item>
          <item>7 Prozent</item>
      </array>
      <array name="ust_werte">
          <item>19</item>
          <item>16</item>
          <item>7</item>
      </array>
</resources>
Hat auch funktioniert ohne Exception.

In meinem Projekt hatte ich das gleich und es gab Exceptions.
Die Lösung für das Problem ist ziemlich einfach. Man muss die Werte in dem Array das für die Anzeige bestimmt ist als Strings angeben wenn es reine Zahlen sind. Im Beispiel wurden die Einheiten ja noch ausgeschrieben wodurch der Compiler diese automatisch als String erkannt hat. In Meiner App hingegen sind auch die anzuzeigenden Werte reine Zahlen welche dann als Integer interpretiert werden. Zur Anzeige sind aber Strings notwendig.
Die richtige Quellcode für meine Anwendung muss also wie folgt lauten.

PHP:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <array name="tag_anzeige">
          <item>"01"</item>
          <item>"02"</item>
          <item>"03"</item>
          <item>"04"</item>
          <item>"05"</item>
          <item>"06"</item>
          <item>"07"</item>
          <item>"08"</item>
          <item>"09"</item>
          <item>"10"</item>
          <item>"11"</item>
          <item>"12"</item>
          <item>"13"</item>
          <item>"14"</item>
          <item>"15"</item>
          <item>"16"</item>
          <item>"17"</item>
          <item>"18"</item>
          <item>"19"</item>
          <item>"20"</item>
          <item>"21"</item>
          <item>"22"</item>
          <item>"23"</item>
          <item>"24"</item>
          <item>"25"</item>
          <item>"26"</item>
          <item>"27"</item>
          <item>"28"</item>
          <item>"29"</item>
          <item>"30"</item>
          <item>"31"</item>
      </array>
      <array name="tag_wert">
          <item>01</item>
          <item>02</item>
          <item>03</item>
          <item>04</item>
          <item>05</item>
          <item>06</item>
          <item>07</item>
          <item>08</item>
          <item>09</item>
          <item>10</item>
          <item>11</item>
          <item>12</item>
          <item>13</item>
          <item>14</item>
          <item>15</item>
          <item>16</item>
          <item>17</item>
          <item>18</item>
          <item>19</item>
          <item>20</item>
          <item>21</item>
          <item>22</item>
          <item>23</item>
          <item>24</item>
          <item>25</item>
          <item>26</item>
          <item>27</item>
          <item>28</item>
          <item>29</item>
          <item>30</item>
          <item>31</item>
      </array>
      <array name="monat_anzeige">
          <item>"01"</item>
          <item>"02"</item>
          <item>"03"</item>
          <item>"04"</item>
          <item>"05"</item>
          <item>"06"</item>
          <item>"07"</item>
          <item>"08"</item>
          <item>"09"</item>
          <item>"10"</item>
          <item>"11"</item>
          <item>"12"</item>
    </array>
    <array name="monat_wert">
          <item>01</item>
          <item>02</item>
          <item>03</item>
          <item>04</item>
          <item>05</item>
          <item>06</item>
          <item>07</item>
          <item>08</item>
          <item>09</item>
          <item>10</item>
          <item>11</item>
          <item>12</item>
    </array>
    <array name="jahr_anzeige">
        <item>"2011"</item>
        <item>"2012"</item>
        <item>"2013"</item>
        <item>"2014"</item>
        <item>"2015"</item>
        <item>"2016"</item>
        <item>"2017"</item>
        <item>"2018"</item>
        <item>"2019"</item>
        <item>"2020"</item>
        <item>"2021"</item>
        <item>"2022"</item>
        <item>"2023"</item>
        <item>"2024"</item>
        <item>"2025"</item>
        <item>"2026"</item>
        <item>"2027"</item>
        <item>"2028"</item>
        <item>"2029"</item>
        <item>"2030"</item>
    </array>
    <array name="jahr_wert">
        <item>2011</item>
        <item>2012</item>
        <item>2013</item>
        <item>2014</item>
        <item>2015</item>
        <item>2016</item>
        <item>2017</item>
        <item>2018</item>
        <item>2019</item>
        <item>2020</item>
        <item>2021</item>
        <item>2022</item>
        <item>2023</item>
        <item>2024</item>
        <item>2025</item>
        <item>2026</item>
        <item>2027</item>
        <item>2028</item>
        <item>2029</item>
        <item>2030</item>
    </array>
</resources>
 

Ähnliche Themen

B
Antworten
9
Aufrufe
195
jogimuc
J
FabianDev
Antworten
5
Aufrufe
636
swa00
swa00
L
Antworten
4
Aufrufe
1.384
lonnie9020
L
Zurück
Oben Unten