EditText小部件的setText有什么问题?

时间:2012-10-06 05:50:51

标签: android android-edittext

我正在尝试通过读取文件在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();
    }
}

我尝试编辑它以删除不相关的代码,但我收到错误,“您的帖子没有太多的上下文来解释代码部分;请更清楚地解释您的方案。”不幸的是,这个问题已经得到了解决。

2 个答案:

答案 0 :(得分: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];

仅供参考:在提问时,也会发布错误日志,然后才能获得快速正确的答案。

<强>更新

参考:  to get error log from eclipse

答案 1 :(得分:0)

用于将字节数组转换为字符串 byte [] bytes = {...} String str = new String(bytes,“UTF8”); //用于UTF8编码

这就是问题所在。