| |||||||
Das Thema "ArrayOutOfBoundException" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
| 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);
Spinner day = (Spinner)findViewById(R.id.aendern_datum_Tag);
day.setSelection(eintrag.day);
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);
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> Arrays.xml):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> |
| | |
| | #2 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Ich weiß, es hilft dir bei der ArrayIndexOutOfBoundsException nicht weiter, aber es gibt einen DatePicker... PS: Spinner hat kein entryValues...
__________________ Follow/Add/Circle/Whatever me on Google+ Solitaire HD, ein Solitaire optimiert für Honeycomb. Geändert von the_alien (19.01.2012 um 16:27 Uhr) |
| | |
| Folgender Benutzer bedankt sich bei the_alien für diesen Beitrag: | Micka (19.01.2012) |
| | #4 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Also ich würde ja mal nach Beispielen suchen. In jedem Beispiel wird ein <string-array> genutzt anstelle eines <array>. Wenn das nicht funktioniert erstelle programmatisch einen ArrayAdapter mit deinem <string-array> und hänge den an.
__________________ Follow/Add/Circle/Whatever me on Google+ Solitaire HD, ein Solitaire optimiert für Honeycomb. |
| | |
| | #5 (permalink) |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
|
das ist eine Idee danke. Werd es morgen mal mit einem StringArray versuchen. Hast du grad ein Link zu einem Beispiel parat? Wonach hast du gesucht?
|
| | |
| | #6 (permalink) |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
|
Problem gelöst. Nach dem einfügen habe ich mir bisher die Auswahl als String in die Datenbank gespeichert. Nun habe ich meine Datenbank erweitert und mir noch die ausgewählte ItemPosition gespeichert. Code: int dayposition = day.getItemPosition(); Code: day.setSelection(dayposition); |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |