2017-02-08 3 views
-2

Ich kann nicht scheinen, auf den Grund davon zu kommen. Verwenden von Apache POI zum Lesen von Excel-Dateien. Scheint, Fehler zu treffen. App-Force zumachenKonnte Methode für android nicht ausführen: onClick in Android

java.lang.IllegalStateException: Could not execute method for android:onClick 

Full error output

Meine XML android: onClick-ID hat den gleichen Namen wie meine Methode Zuhörer:

<Button 
    android:text="OK" 
    android:id="@+id/submitOK" 
    android:textAlignment="center" 
    android:textAppearance="@style/TextAppearance.AppCompat.Caption" 
    android:textSize="12sp" 
    android:background="@drawable/round_button" 
    android:gravity="center_vertical|center_horizontal" 
    android:textColor="#fff" 
    android:layout_alignTop="@+id/setName" 
    android:layout_toRightOf="@+id/setName" 
    android:layout_marginLeft="5dp" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_alignBottom="@+id/setName" 
    **android:onClick="inRoster"** 
    android:visibility="gone" 
/> 

public void inRoster(View v) throws IOException { 
    if (checkValidinFile()) { 
     // Send to a new page that lists your shifts, what time you want your alarms 
     // and what time you want messages to be sent 
     // What time do you want to send the messages? 
     // What time do you want your alarms to be? 
     // Do all alarm and message sending bs 
    } else { 
     // Display a toast message saying name not found 
     // Clear contents of the editbox for the name for user to re enter 
     CharSequence text = "Name not found in Roster!"; 
     setName.setText(""); 
     int duration = Toast.LENGTH_SHORT; 
     Toast.makeText(this, text, duration).show(); 
    } 
} 

Diese scheinbar ist, wo die Fehler in dieser Methode kommen, aber ich Ich verstehe nicht warum.

public boolean checkValidinFile() throws IOException { 
    String nameToMatch = setName.getText().toString().toLowerCase(); 

    try { 
     InputStream ExcelFileToRead = new FileInputStream(roster); 
     XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead); 
     XSSFSheet sheet = wb.getSheetAt(0); 

     Iterator<Row> iterator = sheet.iterator(); 

     while (iterator.hasNext()) { 

      Row currentRow = iterator.next(); 
      Iterator<Cell> cellIterator = currentRow.iterator(); 
      while (cellIterator.hasNext()) { 

       Cell currentCell = cellIterator.next(); 
       System.out.println(currentCell.toString() + " "); 
      } 
     } 
     System.out.println(); 

     wb.close(); 
     ExcelFileToRead.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return true; 
} 

‚SetName‘ an der Spitze der Klasse definiert ist weltweit ohne Instanziierung und dann in onCreate wie folgt definiert:

setName = (EditText) findViewById(R.id.setName); 

Jede Hilfe sehr geschätzt wird, lassen Sie mich wissen, was andere Informationen, die Sie brauchen, ich Ich bekomme auch ein anderes Problem mit I/art, das das Re-Init für zuvor fehlgeschlagene Klassen ablehnt. Siehe Link unten, wenn Sie denken, dass die beiden Probleme möglicherweise miteinander verknüpft sind.

I/art rejection

+0

Ich vermute, der einzige Grund, warum es downvoted ist, weil es so eine "einfache Lösung" ist, wenn es so wäre, warum, anstatt Downvoting und verlassen Sie die Seite, nicht runter, beantworten Sie die Frage, dann verlassen. Ich habe andere ähnliche Antworten angeschaut, meinen Code auf ähnliche Instanzen überprüft und diese Korrekturen ausprobiert und nichts gelöst. –

Antwort

1

Sie können nicht die Methodensignatur bei Nur- ändern, einschließlich der Erklärung wirft. Sie müssen diese IOException abfangen, das bedeutet, auch wenn Sie darauf reagieren, indem Sie sie erneut auslösen (in diesem Fall werden Sie abstürzen).

Ich nehme auch an, dass Funktion in Ihrer Aktivitätsklasse ist. Wenn nicht, ist das auch ein Problem.

+0

Es wurde versucht, die Würfe zu entfernen und Try-Fänge hinzuzufügen, wobei immer noch derselbe Fehler auftrat. Kein Glück –

+0

Irgendwelche anderen Ideen? Ziehen an Strings –

+0

YEah, ich falsch gelesen Ihr Problem, denke ich. Veröffentlichen Sie die vollständige Stack-Trace, ich glaube, Sie haben den echten Fehler (es ist immer die unterste) verpasst. –

0

Ersetzen von Apache POI mit Android5Xlsx Project JAR-Dateien behoben meine Probleme. Kann jetzt Excel-Dateien ohne Fehler lesen/schreiben. Einfache und einfache Lösung. Fazit: Apache POI ist eine Nervensäge.

Verwandte Themen