Используется BufferedReader ... Почему этот код не работает на Android?Работает на Java - PullRequest
1 голос
/ 08 марта 2011

Я хотел установить массив и ввести слово из текстового файла.(stage.txt) Это работает в Java, но не в Android ... Когда я использую (System.out.println (stage [0] [1]), консоль показала значение String. Но в Android, когда я использую

TextView show = new TextView; 
show= (TextView)findViewById(R.id.question); 
show.setText(stage[0][1]);

TextView ничего не показал ... что не так? ... пожалуйста, помогите ...

String[][] stage = new String[2][3];
BufferedReader in = new BufferedReader(new FileReader("stage.txt"));
for(int i=0; i<2;i++)
{
    for(int j=0; j<3; j++)
    {
        stage[i][j]=in.readLine();
    }
}

in.close();

Ответы [ 2 ]

0 голосов
/ 01 января 2013

// Предполагается, что массив 2d правильно заполнен // если не попытаться поместить txt-файл в папку ресурсов и использовать getAssets ()

, но в любом случае попробуйте сделать это таким образом, посмотрите, поможет ли это.

Handler handler = new Handler();
handler.post(new Runnable()
{
    public void run()
    {
        question.setText(stage[0][1]);
    }
});
0 голосов
/ 08 марта 2011

Вы добавили TextView в используемый вами макет?Или вы определили TextView в XML-файле макета?Тогда ваш код TextView show = new TextView;неверно.

TextView show = new TextView;должно быть TextView show = new TextView (this); (в Activity).

Не могли бы вы предоставить полный код раньше?Какие ошибки вы получаете?

ОБНОВЛЕНИЕ: Мне интересно, находится ли ваш файл на вашей SD-карте (из-за этого пути).Вы можете получить доступ к SD-карте через Environment.getExternalStorageDirectory (). GetAbsolutePath (), чтобы получить его корневой путь.

Для своих проектов измените эту строку на:

BufferedReader br = new BufferedReader(new InputStreamReader(
                openFileInput("stage.txt")));

Полный источник:

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

    String[][] stage = new String[2][3];
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(
                openFileInput("stage.txt")));
        for(int i=0; i<2;i++)
        {
            for(int j=0; j<3; j++)
            {
                stage[i][j]=br.readLine();
            }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    TextView question = (TextView) findViewById(R.id.question);
    question.setText(stage[0][1]); 
}
...