-4

我有3依賴於微調框。但請發送我切換區域例外以下內容: 無效IndexOutOfBoundException位置0大小爲0使用XML填充微調器,異常Indexofofbound位置0與大小0

負擔始終是微調區域。另兩個以前的依賴。 例如:我選擇一個地區顯示城市。如果我選擇一個城市相關區顯示,城市

的冷杉時間運行正常,但如果我選擇信息在微調地區微調城啓動一個異常

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.nuevo_cliente); 

    posicion=-1; 
    txtnCliRut=(EditText) findViewById(R.id.txt_nuRut); 
    txtnCliNombre=(EditText) findViewById(R.id.txt_nuNombre); 
    txtnCliDireccion=(EditText) findViewById(R.id.txt_nuDireccion); 
    txtnCliTelefono=(EditText) findViewById(R.id.txt_nuTelefono); 
    txtnCliRut.setKeyListener(DigitsKeyListener.getInstance("-kK")); 
    txtnCliRut.addTextChangedListener(new InputValidator(txtnCliRut)); 
    txtnCliTelefono.setInputType(InputType.TYPE_CLASS_PHONE); 
    btn_crear=(Button) findViewById(R.id.btnNuCliente); 
    btn_cancelar=(Button) findViewById(R.id.btnNuCancela); 

    //Declara Spinner 
    spRegiones=(Spinner) findViewById(R.id.spRegion); 
    spCiudades=(Spinner) findViewById(R.id.spCiudad); 
    spComunas=(Spinner) findViewById(R.id.spComuna); 
    //Declara Arreglos Objetos 
    regiones= new ArrayList<Regiones>(); 
    ciudades =new ArrayList<Ciudades>(); 
    comunas =new ArrayList<Comunas>(); 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) 
    { 
     posicion= extras.getInt("position"); 
     ClienteNuevo modCli= new ClienteNuevo(); 

     modCli=cargaDatos(posicion); 
     txtnCliRut.setText(modCli.getRun_nCliente()); 
     txtnCliNombre.setText(modCli.getNombre_nCliente()); 
     txtnCliDireccion.setText(modCli.getDireccion_nCLiente()); 
     txtnCliTelefono.setText(modCli.getTelefono_nCliente()); 
     btn_crear.setText("Modificar"); 
    } 

    String sFileSrc = null;  
    sFileSrc = "/PDAPedidos/SrcData/regiones.xml"; 
    oRegion = new ArrayList<Regiones>(); 
    oParseRegion = new CargaRegionesParserDom(sFileSrc); 
    oRegion = oParseRegion.getARegiones(); 
    for(int i=0;i<oRegion.size();i++) 
    { 
     regiones.add(oRegion.get(i)); 
    } 

    ArrayAdapter<Regiones> spRegionesAdapter= new ArrayAdapter<Regiones>(this, android.R.layout.simple_spinner_item, regiones); 
    spRegionesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spRegiones.setAdapter(spRegionesAdapter); 

    spRegiones.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 

      ciudades.clear(); 
      comunas.clear(); 
      String sFileSrc = null;  
      sFileSrc = "/PDAPedidos/SrcData/ciudades.xml"; 
      oCiudad = new ArrayList<Ciudades>(); 
      oParseCiudad = new CargaCiudadesParserDom(sFileSrc); 
      oCiudad = oParseCiudad.getACiudades(); 
      Log.i("Cargando-Regiones", "Posicion Select REGIOn "+position); 
      int idRegion=0; 
      idRegion=regiones.get(position).getCodigoRegion(); 
      for(int i=0;i<oCiudad.size();i++) 
      {  
       if(idRegion==oCiudad.get(i).getCodigoRegionCiu()) 
       { 
        ciudades.add(oCiudad.get(i)); 
       } 
      } 

      Log.i("Cargando-Regiones", "Tamaño Arreglo Ciudades"+ ciudades.size()); 
      ArrayAdapter<Ciudades> spCiudadAdapter= new ArrayAdapter<Ciudades>(getApplicationContext(), android.R.layout.simple_spinner_item,ciudades); 
      spCiudadAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spCiudades.setAdapter(spCiudadAdapter); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
     } 
    }); 

    spCiudades.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) 
     { 
      comunas.clear(); 
      String sFileSrc = null;  
      sFileSrc = "/PDAPedidos/SrcData/comunas.xml"; 
      oComuna = new ArrayList<Comunas>(); 
      oParseComuna = new CargaComunasParserDom(sFileSrc); 
      oComuna = oParseComuna.getAComunas(); 

      int idCiudad=0; 
      Log.i("Cargando-Regiones", "id Ciudad "+position); 
      idCiudad=ciudades.get(position).getCodigoCiudad();  
      Log.i("Cargando-Regiones", "id Ciudad "+idCiudad); 
      for(int i=0;i<oComuna.size();i++) 
      { 
       if(idCiudad==oComuna.get(i).getCodigoCiudadCom()) 
       { 
        comunas.add(oComuna.get(i)); 
       } 
      } 

      ArrayAdapter<Comunas> spComunaAdapter= new ArrayAdapter<Comunas>(getApplicationContext(), android.R.layout.simple_spinner_item, comunas); 
      spComunaAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

      spComunas.setAdapter(spComunaAdapter); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 
    }); 

    final ClienteNuevo oNewCli= new ClienteNuevo(); 
    btn_crear.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      oNewCli.setRun_nCliente(txtnCliRut.getText().toString().trim()); 
      oNewCli.setNombre_nCliente(txtnCliNombre.getText().toString().trim()); 
      oNewCli.setDireccion_nCLiente(txtnCliDireccion.getText().toString().trim()); 
      oNewCli.setCiudad_nCliente(txtnCliCiudad.getText().toString().trim()); 
      oNewCli.setComuna_nCliente(txtnCliComuna.getText().toString().trim()); 
      oNewCli.setTelefono_nCliente(txtnCliTelefono.getText().toString().trim()); 
      if(posicion>=0) 
      { 
       modificaCli(oNewCli,posicion); 
       finish(); 
      } 
      else 
      { 
       creaNuevoCliente(oNewCli); 
       finish(); 
      } 
     } 
    }); 
} 

的logcat:

08-08 17:01:11.643: E/AndroidRuntime(18992): Uncaught handler: thread main exiting due to uncaught exception 
08-08 17:01:11.673: E/AndroidRuntime(18992): java.lang.IndexOutOfBoundsException: Invalid location 0, size is 0 
08-08 17:01:11.673: E/AndroidRuntime(18992): at java.util.ArrayList.get(ArrayList.java:341) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:298) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3026) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:909) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.ScrollView.onMeasure(ScrollView.java:283) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3026) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:453) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.TableLayout.measureVertical(TableLayout.java:465) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.TableLayout.onMeasure(TableLayout.java:428) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3026) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3026) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.View.measure(View.java:8018) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewRoot.performTraversals(ViewRoot.java:763) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.os.Looper.loop(Looper.java:123) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at android.app.ActivityThread.main(ActivityThread.java:4363) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at java.lang.reflect.Method.invokeNative(Native Method) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at java.lang.reflect.Method.invoke(Method.java:521) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
08-08 17:01:11.673: E/AndroidRuntime(18992): at dalvik.system.NativeStart.main(Native Method) 
+0

在哪行確實發生了錯誤?你可以發佈你的LogCat嗎? – Yellos 2012-08-08 21:03:41

+0

Plz幫我我需要快速解決方案...我的事ArrayList沒有自動調整大小,當我重寫 – user1585195 2012-08-08 21:28:00

+0

'Log.i(「Cargando-Regiones」,「TamañoArreglo Ciudades」+ ciudades.size());' 這是否輸出「TamañoArreglo Ciudades0」? – Sam 2012-08-08 22:42:50

回答

0

我估計ciudades是空的(具有大小== 0)因此:

if(idRegion==oCiudad.get(i).getCodigoRegionCiu()) 

我看起來像你試圖比較兩個Regiones數據類型。瞭解在Java中,您對不能使用自定義類使用==。您需要使用equals()。考慮這個簡單的例子:

class Foo { 
    String bar; 

    Foo(String string) { 
     this.bar = string; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if(o instanceof Foo) // check 1 
      return bar.equals(((Foo) o).bar); 
     else if(o instanceof String) // check 2 
      return bar.equals(o); 
     return false; // else 
    } 
} 

現在,如果我問:

Foo foo = new Foo("A"); 
Foo foo2 = new Foo("A"); 

foo == foo2;    // false, cannot use == operator for custom classes 
foo.equals(new Foo("a")); // false, check 1 says "A" is not "a" 
foo.equals(foo2);   // true, check 1 
foo.equals("A");   // true, check 2 
foo.equals(1);   // false, else 

其他兩個非常有用的方法來覆蓋的toString()和hashCode()方法。

  • 的toString()定義類的用戶可讀表示,我猜你已經這樣做或您的紗廠有​​他們一些非常難看的字符串。

  • hashCode()被許多內置數據類型使用。例如,如果您想對Foo數組進行排序,這是Java嘗試使用的第一種方法。

下面是這些方法Foo的版本:

@Override 
public int hashCode() { 
    return bar.hashCode(); 
} 

@Override 
public String toString() { 
    return bar; 
}