FileOutputStream中的空指针异常

时间:2014-04-22 06:44:10

标签: java android

我正在尝试使用FileOutputStream运行一个简单的程序。当我运行此程序时,应用程序显示消息“应用程序停止不幸”。 Logcat显示NullPointerException。我的代码出了什么问题??

package com.example.storageinternal;

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

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    private EditText editname,editemail;
    private Button save;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editname = (EditText)findViewById(R.id.editname);
        editemail = (EditText)findViewById(R.id.editemail);

        save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v)
            // TODO Auto-generated method stub
            String namestring = editname.getText().toString();
            String emailstring = editemail.getText().toString();
            FileOutputStream fos = null;

            try {
                fos = openFileOutput("Mystorage",Context.MODE_PRIVATE);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                fos.write(namestring.getBytes());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                fos.write(emailstring.getBytes());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();        
            }
            finally {
                if (fos != null) {
                    try {   
                        fos.close();
                    }
                    catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }   
        });   
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

3 个答案:

答案 0 :(得分:1)

Button中错过了onCreate()初始化。

在实施Button之前,只需初始化onClickListener

Button save=(Button)findViewById(R.id.button);

答案 1 :(得分:0)

试试这个..

未初始化 保存 Button

save = (Button) findViewById(R.id.buttonid);

之前save.setOnClickListener(new OnClickListener() {

您的保存按钮为空,然后您尝试将其用作save.setOnClickListener,那时您将获得 NPE

答案 2 :(得分:-1)

save.setOnClickListener(new OnClickListener() {

将此行移至OnCreate函数中,然后移至intitialize保存按钮。