Muss irgendwo da dran liegen, vorher gab es das Problem nicht
Beiträge von Explosionselfe
-
-
Code
Alles anzeigenpublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.barerfassen); EditText barcode = (EditText) findViewById(R.id.barcodes); try { String line = barcode.getText().toString(), temp=""; ArrayList<String> barcodeinput = new ArrayList<String>(); int i=0; while(line != null){ i++; if(i%2 == 0){ temp=temp+"\n"+line; barcodeinput.add(temp); temp=""; } temp=line; } ListAdapter ladapt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, barcodeinput); ListView lv = (ListView) findViewById(R.id.listView1);lv.setAdapter(ladapt); } finally {}
Dann hier nochmal mit gelöschtem "auskommentierten" und aus dem HTML-Editor
-
Der FileStreamInput ist auskommentiert
Ich wieß nicht, warum der den Code so bescheiden anzeigt. War schon mehrfach im Edit und hab versucht, Leerzeilen rein zu machen.
-
Den FileInputStream etc bräuchte ich ja eigentlich nicht, da ja sowieso nur aus einer EditTextBox gelesen werden soll...Nun sieht das ganze so aus:
Codepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.barerfassen); EditText barcode = (EditText) findViewById(R.id.barcodes); //String input; //FileInputStream fis = openFileInput(input); try { String line = barcode.getText().toString(), temp=""; ArrayList<String> barcodeinput = new ArrayList<String>(); int i=0; //DataInputStream dis = new DataInputStream(fis); while(line != null){ i++; if(i%2 == 0){ temp=temp+"\n"+line; barcodeinput.add(temp); temp=""; } temp=line; } //fis.close(); ListAdapter ladapt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, barcodeinput); ListView lv = (ListView) findViewById(R.id.listView1);lv.setAdapter(ladapt); } finally {}
Werden auch keine Fehler mehr angezeigt, jedoch wenn ich nun "Erfassen" aufrufe, stürzt die App ab und in der LogCat steht
FATAL EXCEPTION: main
java.lang.OutOfMemoryError: [memory exhausted]
Hilfeeee -
OK, quatsch. Hatte n Denkfehler drin.
Hab jetzt alles in die Activity selbst verschoben. dann tritt wieder Problem Nummer 2 auf, dass er bei hierbei meckert:CodeFileInputStream fis = openFileInput(input); while ((line = dis.readLine()) != null) fis.close();
openFileInput(input) meldet Nicht behandelter Ausnahmebedingungstyp (exception type) FileNotFoundException
Die beiden anderen warnen mit: Nicht behandelter Ausnahmebedingungstyp (exception type) IOException
-
In Codebeispielen habe ich das so gefunden, daher hab ich das ausprobiert. Welchen Kontext soll ich ihm denn übergeben?
Selbst wenn ich das ganze in die Activity, statt in die Methode packe, läuft es so nicht (was ja aber wohl an der Parameterübergabe liegt). -
Kurze Allgemeinbeschreibung:
Ich "spiel" mit einem Android Gerät mit Barcode-Leser herum.
Ich hab eine Erfassen.xml, in der oben die Barcodes in eine EditTextBox eingelesen werden und darunter in einer ListView ausgegeben werden sollen. Am Ende soll das das in der ListView steht, auf Buttonklick, in eine Datei gespeichert werden. (so weit bin ich aber noch nicht)
Ich hänge daran, dass die Barcodes in die ListView geschrieben werden. Problematisch ist schon, wenn man 2 Barcodes hintereinander scannt, die einfach hintereinander weg geschrieben werden.Ich hab diverse Lösungsansätze probiert
Das war der erste (noch ohne ListView als Ausgabe, sondern EditTextBox als Ausgabefeld)
Codepublic void onTextChanged(CharSequence s, int start, int before, int count) { // input = barcode.getText().toString();// ausgabe.setText(input.toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { // TODO Automatisch generierter Methodenstub } }); }
Da eben das Problem, das Barcodes einfach hintereinander weggeschrieben werden. Dann kam ich auf die Idee mit dem Array und hab da folgendes gebastelt:
Codepublic void onTextChanged(CharSequence s, int start, int before, int count) { FileInputStream fis = openFileInput(input); try { String line, temp=""; ArrayList<String> barcodeinput = new ArrayList<String>(); int i=0; DataInputStream dis = new DataInputStream(fis); while((line = dis.readLine()) != null){ i++; if(i%2 == 0){ temp=temp+"\n"+line; barcodeinput.add(temp); temp=""; } temp=line; } fis.close(); ListAdapter ladapt = new ArrayAdapter<String>(Erfassen.this, android.R.layout.simple_list_item_1, barcodeinput); ListView lv = (ListView) findViewById(R.id.listView1); lv.setAdapter(ladapt); } finally {} } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { // TODO Automatisch generierter Methodenstub } }); }
Jedoch krieg ich im o.g. Ausschnitt folgende Fehlermeldung:
Der Konstruktor ArrayAdapter<String>(new TextWatcher(){}, int, ArrayList<String>) ist nicht definiert (undefined)
Lt. Google hab ich schon probiert, "this" durch "myActivity.this" zu ersetzen. Dann ist der Fehler zwar weg, jedoch schlagen dann
CodeFileInputStream fis = openFileInput(input); while ((line = dis.readLine()) != null) fis.close();
alarm:
openFileInput(input) meldet Nicht behandelter Ausnahmebedingungstyp (exception type) FileNotFoundException
Die beiden anderen warnen mit: Nicht behandelter Ausnahmebedingungstyp (exception type) IOException
Kann jemand weiter helfen?
Oder in ich da auf komplett falschem Fuß?
-
Danke erstmal.
Ich hab bereits statt des return true ne messagebox reingebaut gehabt.
Die leuchtet auch kurz auf bei auflegen/Home, jedoch geht das gerät trotzdem aus der App raus.
Also angesteuert werden die richtigen.
Sorry, hatte ich vergessen zu erwähnen. -
Hallo zusammen,
ich hab folgendes Problem.
Ich sitz hier mit einem MDE-Gerät (Barcodescanner) mit Hardware-Tasten. Das Gerät läuft mit Android 4.0.3.
Ich muss die "Auflegen"-Taste, sowie den "Home"-Button killen, da man die App nur über einen Button mit Passwort verlassen darf.Den Zurück-Button zu killen war ja noch relativ simpel, ebenso wie den Anrufen Button. Beim Auflegen/Home Button scheint sich das als schwieriger zu gestalten.
Unter anderem hab ichs damit versucht
Javapublic boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_ENDCALL){ return true; } else if(keyCode == KeyEvent.KEYCODE_CALL){ return true; }else if ((keyCode == KeyEvent.KEYCODE_HOME)){return true;} return super.onKeyDown(keyCode, event); }
Bei CALL funktionierts super, bei ENDCALL und HOME interessiert es das Gerät überhaupt nicht.
Alternativ hab ich auch versucht, diese fertige Idee anzupassen und in meins zu integrieren, was aber auch nicht funktioniert.
http://davidegironi.blogspot.d…-sample.html#.U_bezfl_tnM
Auch diese habe ich schon versucht:
http://stackoverflow.com/quest…button-pressed-on-android
Alles ohne Erfolg, weil entweder es unter Android 4 nicht läuft oder ähnliches.
Ich mag natürlich nicht abstreiten, dass ich es vllt auch nicht richtig integriert hatte.Langsam verzweifel ich.
Gruß