Micka
Fortgeschrittenes Mitglied
- 1
Hallo,
mein Ziel ist es Daten aus einer Datenbank in einer Eingabemaske auszugeben damit die Daten dann geändert werden können.
Speziell problematisch scheinen mir die Spinner meiner Eingabemaske.
Was mich stark wundert ist das ich die gleichen Arrays auch in meiner EintragHinzufuegenActivity benutze und dort klappt alles.
Der Wert der übergeben wird ist übrigens in all meinen Testfällen 2...Das Array hat wie ihr unten sehen könnt aber mehr als 2 Items...
Den anscheinend fehlerhaften Code in der Activity habe ich mal Hervorgehoben, kommentiere ich diesen Teil aus läuft alles.
Was mache ich falsch?
Im LogCat steht folgendes:
Meine Activity(EintragAendernActivity.java):
Mein Layout(eintragaendernlayout.xml:
Meine RessourcenArrays.xml):
mein Ziel ist es Daten aus einer Datenbank in einer Eingabemaske auszugeben damit die Daten dann geändert werden können.
Speziell problematisch scheinen mir die Spinner meiner Eingabemaske.
Was mich stark wundert ist das ich die gleichen Arrays auch in meiner EintragHinzufuegenActivity benutze und dort klappt alles.
Der Wert der übergeben wird ist übrigens in all meinen Testfällen 2...Das Array hat wie ihr unten sehen könnt aber mehr als 2 Items...
Den anscheinend fehlerhaften Code in der Activity habe ich mal Hervorgehoben, kommentiere ich diesen Teil aus läuft alles.
Was mache ich falsch?
Im LogCat steht folgendes:
Code:
01-19 14:46:54.011: E/AndroidRuntime(274): FATAL EXCEPTION: main
01-19 14:46:54.011: E/AndroidRuntime(274): java.lang.IndexOutOfBoundsException
01-19 14:46:54.011: E/AndroidRuntime(274): at java.util.Arrays$ArrayList.get(Arrays.java:77)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:298)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.Spinner.makeAndAddView(Spinner.java:189)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.Spinner.layout(Spinner.java:148)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.Spinner.onLayout(Spinner.java:112)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1238)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.TableRow.onLayout(TableRow.java:121)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.TableLayout.onLayout(TableLayout.java:437)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.View.layout(View.java:7035)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.os.Looper.loop(Looper.java:123)
01-19 14:46:54.011: E/AndroidRuntime(274): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-19 14:46:54.011: E/AndroidRuntime(274): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 14:46:54.011: E/AndroidRuntime(274): at java.lang.reflect.Method.invoke(Method.java:521)
01-19 14:46:54.011: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-19 14:46:54.011: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-19 14:46:54.011: E/AndroidRuntime(274): at dalvik.system.NativeStart.main(Native Method)
Code:
package micka.haushaltsbuch;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
public class EintragAendernActivity extends Activity
{
final static String MY_DB_NAME = "FinanzenDB";
static String MY_DB_TABLE = "eintraege";
final static String tag="ensacom";
long id;
SQLiteDatabase myDB = null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.eintragaendernlayout);
altenEintragLaden();
}
public void altenEintragLaden()
{
myDB = null;
final Bundle extras = getIntent().getExtras();
if(extras != null)
{
MY_DB_TABLE = extras.getString(EintraegeAnzeigenActivity.TABELLENNAME);
id = extras.getLong(EintraegeAnzeigenActivity.ID);
}
Eintrag eintrag = null;
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
Cursor eintragCursor = myDB.rawQuery("SELECT _id, day, month, year, wofuer, betrag FROM " + MY_DB_TABLE + " WHERE _id=" + id + " Order By day, month, year", null);
eintragCursor.moveToFirst();
if(eintragCursor.moveToFirst())
{
eintrag = null;
eintrag = new Eintrag(eintragCursor.getInt(0),eintragCursor.getInt(1),eintragCursor.getInt(2),eintragCursor.getInt(3),eintragCursor.getString(4),eintragCursor.getDouble(5));
}
eintragCursor.close();
myDB.close();
if(eintrag != null)
{
Log.v(tag, "Edit Eintrag: " + eintrag.day + "." +eintrag.month +"." + eintrag.year +", " + eintrag.wofuer + ", " + eintrag.betrag + ", id=" + eintrag._id);
[B]Spinner day = (Spinner)findViewById(R.id.aendern_datum_Tag);
day.setSelection(eintrag.day);[/B]
[B]Spinner month = (Spinner)findViewById(R.id.aendern_datum_Monat);
month.setSelection(eintrag.month);
Spinner year = (Spinner)findViewById(R.id.aendern_datum_Jahr);
year.setSelection(eintrag.year);[/B]
EditText wofuer = (EditText)findViewById(R.id.aendern_zweck);
wofuer.setText(eintrag.wofuer);
EditText betrag = (EditText)findViewById(R.id.aendern_betrag);
betrag.setText(String.valueOf(eintrag.betrag));
}
}
public void onClickEintragSpeichern(final View sfNormal)
{
Spinner day = (Spinner) findViewById(R.id.datum_Tag);
Spinner month = (Spinner) findViewById(R.id.datum_Monat);
Spinner year = (Spinner) findViewById(R.id.datum_Jahr);
EditText wofuer = (EditText) findViewById(R.id.hinzufuegen_zweck);
EditText betrag = (EditText) findViewById(R.id.hinzufuegen_betrag);
//Extras abrufen
final Bundle extras = this.getIntent().getExtras();
if(extras != null)
{
MY_DB_TABLE = extras.getString(StartHaushaltsbuchActivity.TABELLENNAME);
if(MY_DB_TABLE == null)
{
MY_DB_TABLE = extras.getString(EintraegeAnzeigenActivity.TABELLENNAME);
}
}
final Eintrag eintrag = new Eintrag();
eintrag.day = Integer.valueOf(day.getSelectedItem().toString()) ;
eintrag.month = Integer.valueOf(month.getSelectedItem().toString()) ;
eintrag.year = Integer.valueOf(year.getSelectedItem().toString()) ;
eintrag.wofuer = wofuer.getText().toString();
eintrag.betrag = Double.parseDouble(betrag.getText().toString());
myDB = null;
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
+ " (_id integer primary key autoincrement,"
+ " day integer(2), month integer(2),"
+ " year integer(4), wofuer text not null,"
+ " betrag real)"
+";");
myDB.execSQL("INSERT INTO "+MY_DB_TABLE+" (day, month, year, wofuer, betrag) "
+"VALUES (" + eintrag.day +","+eintrag.month+","
+ eintrag.year +","+"'"+eintrag.wofuer +"',"
+ eintrag.betrag+ ");");
Log.v(tag, "Insert new Eintrag: " + eintrag.day + "." +eintrag.month +"." + eintrag.year +", " + eintrag.wofuer + ", " + eintrag.betrag + ", id=" + eintrag._id);
myDB.close();
final Intent i = new Intent(this, StartHaushaltsbuchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
}
Code:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- Datum -->
<TableRow>
<Spinner
android:id="@+id/aendern_datum_Tag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/tag_anzeige"
android:entryValues="@array/tag_wert"
/>
<Spinner
android:id="@+id/aendern_datum_Monat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/monat_anzeige"
android:entryValues="@array/monat_wert"
/>
<Spinner
android:id="@+id/aendern_datum_Jahr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/jahr_anzeige"
android:entryValues="@array/jahr_wert"
/>
</TableRow>
<!-- Zweck -->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Zweck:"
android:gravity="left"
android:maxWidth="15dp"/>
<EditText
android:id="@+id/aendern_zweck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text" >
<requestFocus />
</EditText>
</TableRow>
<!-- Betrag -->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Betrag:"
/>
<EditText
android:id="@+id/aendern_betrag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number|numberSigned|numberDecimal"
/>
</TableRow>
<Button
android:id="@+id/button_aendern"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttontxt_aendern"
android:onClick="onClickEintragSpeichern"
/>
</TableLayout>
Code:
<?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>