Brauche Hilfe beim Programmieren: Textdatei von der Sd Karte auslesen und im TextView anzeigen

  • Antworten:6
  • Bentwortet
Sam Browder
  • Forum-Beiträge: 236

03.11.2012, 19:06:36 via Website

Ich habe folgendes Problem:
ich will eine einzige Textdatei, welche sich auf der SD Karte befindet, im TextView anzeigen lassen, wenn man auf einen Button klickt.
Ich glaube ich habe schon alles gemacht - die Überprüfung, ob die Datei auch wirklich existiert (Zeile 16) funktioniert auch, aber es wird einfach nichts im TextView angezeigt. Ich weiss einfach nicht, wo der Fehler liegt... Hier ist der Quellcode dazu:
1public class MainActivity extends Activity {
2 private TextView mTextInput;
3 private File f;
4 private Button mButton;
5
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.main);
10
11 mTextInput = (TextView) findViewById(R.id.textRead);
12
13 f = new File(Environment.getExternalStorageDirectory()+"/test.txt");
14
15 mButton = (Button) findViewById(R.id.data_load);
16 mButton.setEnabled(f.exists());
17 }
18 public void onButtonClick (View view) {
19 switch (view.getId()) {
20 case R.id.data_load:
21 try {
22 FileInputStream fileIn =
23 new FileInputStream(f);
24 loadData(fileIn);
25
26 } catch (FileNotFoundException e) {
27 e.printStackTrace();
28 }
29 break;
30 }
31 }
32 private void loadData(FileInputStream fileIn) {
33 BufferedReader fileInBuffer = new BufferedReader (new InputStreamReader(fileIn));
34 String text = "";
35 String line;
36 try {
37 while ((line = fileInBuffer.readLine()) != null) {
38 text += line;
39 }
40 } catch (IOException e) {
41 e.printStackTrace();
42 } finally {
43 try {
44 fileInBuffer.close();
45 } catch (IOException e) {
46 e.printStackTrace();
47 }
48 }
49 mTextInput.setText(text);
50 }
51}
Danke im Voraus!

Antworten
Sam Browder
  • Forum-Beiträge: 236

03.11.2012, 19:53:44 via Website

Was meinen Sie mit "verknüpft"? Ich wähle ja einen bestimmten Button über seine ID aus (Zeile 20). Oder habe ich da zu viel herumexperimentiert...
Aber eigentlich brauche ich doch nicht mehr onClick im XML zu definieren, oder?
Hier ist der XML Code des Buttons:
1<Button
2 android:id="@+id/data_load"
3 android:layout_width="100dp"
4 android:layout_height="wrap_content"
5 android:layout_gravity="center_horizontal"
6 android:text="@string/load" />

Ich kann es auch über XML definieren:
1<Button
2 android:onClick="compassStart"
3 android:id="@+id/data_load"
4 android:layout_width="100dp"
5 android:layout_height="wrap_content"
6 android:onClick="loadStart"
7 android:layout_gravity="center_horizontal"
8 android:text="@string/load" />
und
1public void loadStart(final View View) {
2 try {
3 FileInputStream fileIn =
4 new FileInputStream(f);
5 loadData(fileIn);
6 } catch (FileNotFoundException e) {
7 e.printStackTrace();
8 }
9 break;
10 }
Das Ergebnis ist aber der selbe, =0.

— geändert am 03.11.2012, 20:26:28

Antworten
Sam Browder
  • Forum-Beiträge: 236

03.11.2012, 21:51:27 via Website

Ich lege jetzt Mal ein neues Projekt an, und werde diesen mit XML onClick schreiben, denn in diesem habe ich jetzt ziemlichen Salat....
Melde mich, wenn es fertig ist...

Antworten
Sam Browder
  • Forum-Beiträge: 236

03.11.2012, 22:14:53 via Website

Jep, VIELEN DANK!!!:lol:
Es funktioniert!!!! Ich habe den Fehler!
So müsste es sein:
1public void loadStart(final View View) {
2 FileInputStream fileIn;
3 try {
4 fileIn = new FileInputStream(f);
5 loadData(fileIn);
6 } catch (FileNotFoundException e) {
7 e.printStackTrace();
8 }
9 }
10 private void loadData(FileInputStream fileIn) {
11 BufferedReader fileInBuffer = new BufferedReader (new InputStreamReader(fileIn));
12 String text = "";
13 String line;
14 try {
15 while ((line = fileInBuffer.readLine()) != null) {
16 text += line;
17 }
18 } catch (IOException e) {
19 e.printStackTrace();
20 } finally {
21 try {
22 fileInBuffer.close();
23 } catch (IOException e) {
24 e.printStackTrace();
25 }
26 }
27 mTextInput.setText(text);
28}
29}

Antworten
Sam Browder
  • Forum-Beiträge: 236

05.11.2012, 13:19:31 via Website

Hi,
jetzt habe ich das Problem, dass es mit diesem Code auf Android 4.0.4 (Motorola RAZR) einwandfrei funktioniert, aber auf dem HTC Desire (Android 2.2.2) das o. g. Problem weiterhin auftritt: die Datei wird zwar erkannt, aber nicht ausgelesen.

Hat sich erledigt: es lag an der Datei.

— geändert am 05.11.2012, 13:39:33

Antworten