-2

ファイルを読み取って EditText にテキストを設定しようとしていますが、毎回アプリが閉じられます。誰かがこのコードの何が問題なのか教えてもらえますか?

package com.example;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.*;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class EditNoteActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        String FILENAME = "note_file";
        EditText text = (EditText) findViewById(R.id.editText1);
        byte[] buffer = new byte[100];


        super.onCreate(savedInstanceState);
        setContentView(R.layout.editnote);

        //Intent intent = getIntent();

        FileInputStream fos = null;
        try {
            fos = openFileInput(FILENAME);
        } catch (FileNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        assert fos != null;
        try {
            fos.read(buffer, 0, 10);
            String str = buffer.toString();
            text.setTextSize(48);
            text.setText(str);
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
    public void onClickSave(View theButton) {
        //Intent intent = new Intent(this, MyActivity.class);
        //startActivity(intent);
        String FILENAME = "note_file";

        EditText text = (EditText) findViewById(R.id.editText1);


        FileOutputStream fos = null;
        try {
            fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
        } catch (FileNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        assert fos != null;
        try {
            fos.write(text.getText().toString().getBytes());
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        finish();
    }
    public void onClickBack(View theButton) {
        //Intent intent = new Intent(this, MyActivity.class);
        //startActivity(intent);
        finish();
    }
}

これを編集して無関係なコードを削除しようとしましたが、「あなたの投稿には、コード セクションを説明するコンテキストがあまりありません。シナリオをより明確に説明してください。」というエラーが表示されました。残念ながらあまり多くはありませんが、とにかくこの質問には答えがあります。

4

2 に答える 2

0

コンテンツビューを設定する前にEditText(テキスト)を初期化しているため、IDで編集テキストを検索しているときにEditTextオブジェクトがnullになるため、アプリケーションがクラッシュしました。

次のようにコードを変更します

super.onCreate(savedInstanceState);
setContentView(R.layout.editnote);

String FILENAME = "note_file";
EditText text = (EditText) findViewById(R.id.editText1);
byte[] buffer = new byte[100];

参考までに:質問をしている間、エラーログも投稿してください。そうすれば、あなただけが迅速かつ適切な答えを得ることができます。

アップデート

Eclipseからエラーログを取得するには、:を参照 してください

于 2012-10-06T06:05:31.990 に答える
0

バイト配列を文字列に変換するため byte[] bytes = {...} String str = new String(bytes, "UTF8"); // UTF8 エンコーディング用

これが問題です。

于 2012-10-06T06:08:38.443 に答える