Bonjour, en lançant mon code j'ai une erreur de ce type:
01-02 09:29:51.236: E/AndroidRuntime(532): FATAL EXCEPTION: main
01-02 09:29:51.236: E/AndroidRuntime(532): java.lang.RuntimeException: Unable to start activity ComponentInfo{rapport.presse.cim/rapport.presse.cim.Tableau}: java.lang.ArrayIndexOutOfBoundsException: length=20; index=20
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.os.Looper.loop(Looper.java:137)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-02 09:29:51.236: E/AndroidRuntime(532): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 09:29:51.236: E/AndroidRuntime(532): at java.lang.reflect.Method.invoke(Method.java:511)
01-02 09:29:51.236: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-02 09:29:51.236: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-02 09:29:51.236: E/AndroidRuntime(532): at dalvik.system.NativeStart.main(Native Method)
01-02 09:29:51.236: E/AndroidRuntime(532): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=20; index=20
01-02 09:29:51.236: E/AndroidRuntime(532): at rapport.presse.cim.Tableau.onCreate(Tableau.java:202)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.Activity.performCreate(Activity.java:4465)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-02 09:29:51.236: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
01-02 09:29:51.236: E/AndroidRuntime(532): ... 11 more
Pourtant je ne pense pas me tromper:
@Override
for (int i = 0; i < 5; i++){
mDataMap.add(new ArrayList<String>());
for (int j = cpt; j < cpt+20; j++){
textViewTab[i][j] = (TextView) findViewById(textViewId[j].getResId());
cpt=+20;
}
new AsyncDownloadTab(mDataMap.get(i), textViewTab[i]).execute(url, "choix", mVariable, "date", mDate[i]);
}
}
J'ai un double tableau, je rentre dans le tableau de tableau via ma première boucle et ensuite je m'occupe d'initialer mes Textview dans les cellules de chaque tableau.
Quand j'ai fini l'étape pour le premier tableau je lance l'asyncDownload en envoyant ce tableau en paramètre.
Dans ma classe asynchrone j'ai ça:
@Override
protected void onPostExecute(List<String> result) {
super.onPostExecute(result);
if (mListChiffres != null){
for(int i = 0; i < mTextViewMap.length; i++){
mTextViewMap[i].setText(mListChiffres.get(i));
}
}
}
Voilà je ne vois pas trop où j'ai fait une erreur.
Voilci mes 2 classes concernées (la classe http est dc je ne la montre pas):
Classe tableau:
package rapport.presse.cim;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TextView;
public class Tableau extends Activity {
//protected static final View mCaseTableLayout16 = null;
public String[] mDate = {"2007", "2008", "2009", "2010", "2011"};
enum TextViewId{
mDataNbNumCol1(R.id.dataNbNum1),
mDataTirageCol1(R.id.dataTirage1),
mDataDiffTotCol1(R.id.dataDiffTot1),
mDataDiffPayCol1(R.id.dataDiffPay1),
mDataVindCol1(R.id.dataVind1),
mDataAbPrintCol1(R.id.dataAbPrint1),
mDataAbGroupCol1(R.id.dataAbGroup1),
mDataVNumPCol1(R.id.dataVNumP1),
mDataVTiersCol1(R.id.dataVTiers1),
mDataAdCol1(R.id.dataAd1),
mDataNonAdCol1(R.id.dataNonAd1),
mDataAffCol1(R.id.dataAff1),
mDataAutreDiffMCol1(R.id.dataAutreDiffM1),
mDataAdBisCol1(R.id.dataAdBis1),
mDataNonAdBisCol1(R.id.dataNonAdBis1),
mDataPushCol1(R.id.dataPush1),
mDataPullCol1(R.id.dataPull1),
mDataPullBisCol1(R.id.dataPullBis1),
mDataDisPubCol1(R.id.dataDisPub1),
mDataDiffDCol1(R.id.dataDiffD1),
mDataNbNumCol2(R.id.dataNbNum2),
mDataTirageCol2(R.id.dataTirage2),
mDataDiffTotCol2(R.id.dataDiffTot2),
mDataDiffPayCol2(R.id.dataDiffPay2),
mDataVindCol2(R.id.dataVind2),
mDataAbPrintCol2(R.id.dataAbPrint2),
mDataAbGroupCol2(R.id.dataAbGroup2),
mDataVNumPCol2(R.id.dataVNumP2),
mDataVTiersCol2(R.id.dataVTiers2),
mDataAdCol2(R.id.dataAd2),
mDataNonAdCol2(R.id.dataNonAd2),
mDataAffCol2(R.id.dataAff2),
mDataAutreDiffMCol2(R.id.dataAutreDiffM2),
mDataAdBisCol2(R.id.dataAdBis2),
mDataNonAdBisCol2(R.id.dataNonAdBis2),
mDataPushCol2(R.id.dataPush2),
mDataPullCol2(R.id.dataPull2),
mDataPullBisCol2(R.id.dataPullBis2),
mDataDisPubCol2(R.id.dataDisPub2),
mDataDiffDCol2(R.id.dataDiffD2),
mDataNbNumCol3(R.id.dataNbNum3),
mDataTirageCol3(R.id.dataTirage3),
mDataDiffTotCol3(R.id.dataDiffTot3),
mDataDiffPayCol3(R.id.dataDiffPay3),
mDataVindCol3(R.id.dataVind3),
mDataAbPrintCol3(R.id.dataAbPrint3),
mDataAbGroupCol3(R.id.dataAbGroup3),
mDataVNumPCol3(R.id.dataVNumP3),
mDataVTiersCol3(R.id.dataVTiers3),
mDataAdCol3(R.id.dataAd3),
mDataNonAdCol3(R.id.dataNonAd3),
mDataAffCol3(R.id.dataAff3),
mDataAutreDiffMCol3(R.id.dataAutreDiffM3),
mDataAdBisCol3(R.id.dataAdBis3),
mDataNonAdBisCol3(R.id.dataNonAdBis3),
mDataPushCol3(R.id.dataPush3),
mDataPullCol3(R.id.dataPull3),
mDataPullBisCol3(R.id.dataPullBis3),
mDataDisPubCol3(R.id.dataDisPub3),
mDataDiffDCol3(R.id.dataDiffD3),
mDataNbNumCol4(R.id.dataNbNum4),
mDataTirageCol4(R.id.dataTirage4),
mDataDiffTotCol4(R.id.dataDiffTot4),
mDataDiffPayCol4(R.id.dataDiffPay4),
mDataVindCol4(R.id.dataVind4),
mDataAbPrintCol4(R.id.dataAbPrint4),
mDataAbGroupCol4(R.id.dataAbGroup4),
mDataVNumPCol4(R.id.dataVNumP4),
mDataVTiersCol4(R.id.dataVTiers4),
mDataAdCol4(R.id.dataAd4),
mDataNonAdCol4(R.id.dataNonAd4),
mDataAffCol4(R.id.dataAff4),
mDataAutreDiffMCol4(R.id.dataAutreDiffM4),
mDataAdBisCol4(R.id.dataAdBis4),
mDataPushCol4(R.id.dataPush4),
mDataPullCol4(R.id.dataPull4),
mDataPullBisCol4(R.id.dataPullBis4),
mDataDisPubCol4(R.id.dataDisPub4),
mDataDiffDCol4(R.id.dataDiffD4),
mDataNbNumCol5(R.id.dataNbNum5),
mDataTirageCol5(R.id.dataTirage5),
mDataDiffTotCol5(R.id.dataDiffTot5),
mDataDiffPayCol5(R.id.dataDiffPay5),
mDataVindCol5(R.id.dataVind5),
mDataAbPrintCol5(R.id.dataAbPrint5),
mDataAbGroupCol5(R.id.dataAbGroup5),
mDataVNumPCol5(R.id.dataVNumP5),
mDataVTiersCol5(R.id.dataVTiers5),
mDataAdCol5(R.id.dataAd5),
mDataNonAdCol5(R.id.dataNonAd5),
mDataAffCol5(R.id.dataAff5),
mDataAutreDiffMCol5(R.id.dataAutreDiffM5),
mDataAdBisCol5(R.id.dataAdBis5),
mDataNonAdBisCol5(R.id.dataNonAdBis5),
mDataPushCol5(R.id.dataPush5),
mDataPullCol5(R.id.dataPull5),
mDataPullBisCol5(R.id.dataPullBis5),
mDataDisPubCol5(R.id.dataDisPub5),
mDataDiffDCol5(R.id.dataDiffD5);
private int resId;
private TextViewId(int r){
this.resId = r;
}
public int getResId(){
return this.resId;
}
}
enum ButtonId{
mNbNum(R.id.nbNum),
mTirage(R.id.tirage),
mDiffTot(R.id.diffTot),
mPullBis(R.id.pullBis);
private int resId;
private ButtonId(int r){
this.resId = r;
}
public int getResId(){
return this.resId;
}
}
enum TableId{
mTableLayout1(R.id.tableLayout1),
mTableLayout2(R.id.tableLayout2),
mTableLayout6(R.id.tableLayout3),
mTableLayout7(R.id.tableLayout4);
private int resId;
private TableId(int r){
this.resId = r;
}
public int getResId(){
return this.resId;
}
}
public TextViewId[] textViewId = TextViewId.values();
public TextView[] textViewMap = new TextView[20];
public TextView[][] textViewTab = new TextView[5][textViewMap.length];
public ButtonId[] buttonId = ButtonId.values();
public Button[] buttonMap = new Button[buttonId.length]; //4
public List<ArrayList<String>> mDataMap = new ArrayList<ArrayList<String>>(5); //5 colonnes
public TableId[] tableId = TableId.values();
public TableLayout[] tableMap = new TableLayout[tableId.length]; //4
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tableau);
final String url="http://192.168.1.100/cimPresse.php?donnee=getResultats";
/**================================================
Récupération des passages de variable
================================================**/
Bundle extra = getIntent().getExtras();
String mVariable = extra.getString("choix");
// Log.i("log_tag", mVariable);
int cpt = 0;
for (int i = 0; i < 5; i++){
mDataMap.add(new ArrayList<String>());
for (int j = cpt; j < cpt+20; j++){
textViewTab[i][j] = (TextView) findViewById(textViewId[j].getResId());
cpt=+20;
}
new AsyncDownloadTab(mDataMap.get(i), textViewTab[i]).execute(url, "choix", mVariable, "date", mDate[i]);
}
for (int k = 0; k < buttonId.length; k++){
tableMap[k] = (TableLayout) findViewById(tableId[k].getResId());
tableMap[k].setVisibility(View.GONE);
buttonMap[k] = (Button) findViewById(buttonId[k].getResId());
buttonMap[k].setOnClickListener(new MyTabListener(tableMap[k]));
}
}
}
Réglé, je devais utiliser un autre indice pour mon tableau d'id et donc ma boucle devient:
int cpt = 0;
int indexTextViewId = 0;
for (int i = 0; i < textViewTab.length; i++){
mDataMap.add(new ArrayList<String>());
for (int j = cpt; j < cpt+sizeDate; j++){
textViewTab[i][j] = (TextView) findViewById(textViewId[indexTextViewId].getResId());
indexTextViewId++;
}
new AsyncDownloadTab(mDataMap.get(i), textViewTab[i]).execute(url, "choix", mVariable, "date", mDate[i]);
}
[Android] Problème size et index d'un tableau de tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.