Ich überschreibe onResume-Methode, um den vorherigen Status meiner Aktivität zu laden, zB das letzte ausgewählte Element des Spinner usw. Derselbe Code funktioniert jedoch für einige Aktivitäten gut, aber für einige führt er zum Absturz, wenn i entferne diese onResume von ihnen, Aktivität stürzt nicht ab.Die onResume-Methode bewirkt, dass die Aktivität zum Absturz kommt
Hier ist der Code
@Override
protected void onResume() {
super.onResume();
sp1 = (Spinner)findViewById(R.id.spinner);
sp2=(Spinner)findViewById(R.id.spinner1);
sp3=(Spinner)findViewById(R.id.spinner2);
sp4=(Spinner)findViewById(R.id.spinner3);
sp5=(Spinner)findViewById(R.id.spinner4);
TextView tx=(TextView)findViewById(R.id.upgradeResult) ;
SharedPreferences prefs = getSharedPreferences("restore_defensiveBuildings_state", Context.MODE_PRIVATE);
int spinner1Indx = prefs.getInt("spinner1_indx", 0);
int spinner2Indx = prefs.getInt("spinner2_indx", 0);
int spinner3Indx = prefs.getInt("spinner3_indx", 0);
int spinner4Indx = prefs.getInt("spinner4_indx", 0);
int spinner5Indx = prefs.getInt("spinner5_indx", 0);
sp1.setSelection(spinner1Indx);
sp2.setSelection(spinner2Indx);
sp3.setSelection(spinner3Indx);
sp4.setSelection(spinner4Indx);
sp5.setSelection(spinner5Indx);
tx.setText(""+totalAirBombUpgradeCost);
}
Dies ist, wie ich Elemente an den Adapter
Spinner sp1;
Spinner sp2;
Spinner sp3;
Spinner sp4;
Spinner sp5;
TextView tx;
Button sbmt;
String levels[]={"Level 1",
"Level 2",
"Level 3",
"Level 4"
};
int[] images={R.drawable.giant_bomb_1and2,
R.drawable.giant_bomb_1and2 ,
R.drawable.giant_bomb_3and4,
R.drawable.giant_bomb_3and4
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_giant_bomb);
//// initialize all your visual fields
// if (savedInstanceState != null) {
// sp1.setSelection(savedInstanceState.getInt("MySpinner1", 0));
// // do this for each of your text views
// }
sbmt=(Button)findViewById(R.id.submit);
tx=(TextView)findViewById(R.id.upgradeResult);
sp1=(Spinner)findViewById(spinner);
sp2=(Spinner)findViewById(R.id.spinner1);
sp3=(Spinner)findViewById(R.id.spinner2);
sp4=(Spinner)findViewById(R.id.spinner3);
sp5=(Spinner)findViewById(R.id.spinner4);
SpinnerAdapterGiant adapter=new SpinnerAdapterGiant(this,levels,images);
sp1.setAdapter(adapter);
sp2.setAdapter(adapter);
sp3.setAdapter(adapter);
sp4.setAdapter(adapter);
sp5.setAdapter(adapter);
Und das ist der Fehler
java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
EDIT geladen: Wenn ich entfernen onResume() , alles funktioniert gut App stürzt nicht ab, nur dass es den vorherigen Zustand der Aktivität nicht lädt.
erhöhen, weil Sie nur 4 Elemente in deiner Liste. Array beginnt immer von 0. in Ihrem Fall Array-Elemente können Sie Ass 0 bis 3. 4th Index ist nicht in Ihrem Array –
Mögliche Duplikat von [Was verursacht eine java.lang.ArrayIndexOutOfBoundsException und wie verhindere ich es?] (Http: //stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundexception-and-how-do-i-prevent-it) – Selvin
Ich füge 4 Elemente zu jedem Spinner hinzu @SaurabhBhandari –