Text Datei aus dem raw-Ordner auslesen

  • Antworten:2
unig
  • Forum-Beiträge: 2

05.05.2014, 01:55:41 via Website

Hallo liebe Gemeinde x),
ich bin neu hier und hab ein Problem und sitze jetzt seit bestimmt 2-3 Tagen da dran.Dazu sei gesagt ich bin ein blutiger Anfänger!! Ich will eigendlich etwas ganz simples.(zumindest müsste es ja recht simple sein)
Hoffe, dass ich im richtigen bereich bin.
Ich habe mir jetzt ein "Verzeichnis Baum"(so nenne ich es mal) aufgebaut.
Bsp.:
-Man startet die App und kommt auf die Main-page.
-Auf der Main-page sind 5 Button die zu 5 unterschiedlichen Seiten führen.
-Man klickt auf Button 1 und kommt zur Page 1 auf Page 1 klickt man wieder auf Button 1 und kommt auf die
nächstenPage in der ein Text angezeigt werden soll.Scrollbar.
Der Text befindet sich in einer .txt datei im raw Ordner.

Das wird eine App die recht oft aktualisiert werden muss aufgrund von neuen Informationen.
Also will ich es mir so einfach wie möglich machen. Text.txt einfach ersetzen oder ne neue einfügen und auf der neuen dazugehörigen Page verlinken.

Ich habe jetzt einen Code um es aus dem raw Ordner auszulesen. Ich habe dafür extra im src ne neue .Java Datei angelegt. Das Problem ist es funktioniert nicht!
Wenn ich den Code in der "MainActivity.java" reinschreibe und das dort vorhandene kombiniere funktioniert es.
Allerdings nicht so wie ich es will. Denn dann startet die app und die Text.txt wird direkt angezeigt. Ich will die text.txt aber erst sehen wenn ich auf der dafür vorgesehenen Page bin.

Meine frage:
Muss ich die 2. .java datei in der MainActivity.java datei verlinken?

Gibt es vllt eine bessere möglichkeit die Datei auszulesen?
Ich Poste mal den Code der Activity:

package com.example.***!APPNAME!***;

import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class TexteActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.!!Hier steht mein gewähltes Layout!!);

    TextView ***!?Layout?!*** = (TextView) findViewById(R.id.***!!Das Anzeige feld!!***);

    ***!?Layout?!***.setText(readText());
}

private String readText() {
InputStream inputStream = getResources().openRawResource(
R.raw.!!Text.TXT!!);

   ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

   int i;
   try {
       i = inputStream.read();
       while (i != -1) {
           byteArrayOutputStream.write(i);
           i = inputStream.read();
       }
       inputStream.close();
     }catch (IOException e) {
         e.printStackTrace();
     }

     return byteArrayOutputStream.toString();

     }

}

Ich habe meine Layout und txt namen mal verändert. Komisch ist ja wie ich finde, dass es bei der main eingefügt "teilweise" funktioniert.

Ich hoffe ich habe alles verständlich rüber gebracht. Wie gesagt, bin nen blutiger Anfänger der das seit vllt 2-3 Wochen zwischendurch macht. Seit 3 Tagen fast den ganzen Tag xD. Ich will das jetzt hinbekommen!
Ich bedanke mich schonmal für eure hilfe! :)

Antworten
impjor
  • Forum-Beiträge: 1.793

05.05.2014, 13:58:09 via App

Du sagst, du hast einen "Verzeichnisbaum". D.h. 1.Activity mit 5 Buttons, verlinken auf andere Seite mit wieder fünf Buttons verlinken auf dritte Seite, die zeigt Text aus der txt an.
Wäre nun natürlich sinnvoll nur drei Activitys zu haben:
1. Activity: Zeigt die fünf Buttons an, bei Klick auf Button x wird Activity 2 aufgerufen, über ein Intent-Extra wird mittgeteilt, dass x gedrückt wurde.
2. Activity: Liest x aus dem Intent aus und zeigt wieder Buttons an. Beim Klick auf Button y wird dritte Activity aufgerufen, mit Intent-Extra x und y.
3. Activity: Ließt x und y aus und zeigt txt-Datei an (die am besten "x_y.txt" heißt (so in der Art, damit dynamisch).
In dieser dritten Activity wird dann der Text angezeigt.
*Praktisch wäre es, wenn alle txt-Dateien nicht im /res/raw - Ordner wäre (da man da mit id rumhampeln muss), sondern im /assets/-Ordner. Funktioniert zu 99% gleich, man kann aber dynamisch einen Datei mit einem Dateinamen aufrufen.

Wenn du das soweit hast, müsstest du dein Problem noch etwas genauer beschrieben, was nicht funktioniert.

— geändert am 05.05.2014, 13:59:54

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
unig
  • Forum-Beiträge: 2

05.05.2014, 14:22:36 via Website

Danke, ich probiere es später mal und berichte. War die ganze Zeit schon am überlegen ob ich den Assetmgr nutzen soll. Aber wie gesagt... neuling xP

Antworten