簡體   English   中英

致命異常主要在onclick

[英]Fatal Exception main at onclick

我得到E / AndroidRuntime:FATAL EXCEPTION:主要在com.test.megatest.Main4Activity $ 1.onClick(Main4Activity.java:37)。

我已經在這個論壇上閱讀了大量的帖子,但我無法弄清楚我失蹤了什么,

這是Main4Activity.java:

package com.test.megatest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main4Activity extends AppCompatActivity {
EditText inputText;
TextView response;
    Button saveButton, readButton;

    private String filename = "SampleFile.txt";
    private String filepath ="MyFileStorage";
    File myExternalFile;
    String myData ="";

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

        inputText = (EditText) findViewById(R.id.myInputText);
        response = (TextView) findViewById(R.id.response);

        saveButton =(Button) findViewById(R.id.saveExternalStorage);
        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileOutputStream fos = new FileOutputStream(myExternalFile);  //LINE 37
                    fos.write(inputText.getText().toString().getBytes());
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                inputText.setText("");
                response.setText("SampleFile.txt saved to somewhere..");

            }
        });
    }
}

這里有人能指出我正確的方向嗎? :)

您嘗試打開輸出流的文件為NULL。 您將其聲明為成員但從未初始化它。

您的Main4Activity有一個“文件”變量:

File myExternalFile;


但是沒有為該變量分配任何對象/值您正試圖在其中使用它:

FileOutputStream fos = new FileOutputStream(myExternalFile);


顯然你會得到一個例外:P

您應該使用java.io.File中指定的4個公共構造函數中的任何一個初始化“myExternalFile”(具體取決於您的用例)。
例如:

// If you need a "Persistent" file in private directory of your application
//
myExternalFile = new File(this.getFilesDir() ,"name_of_your_file.txt");
//
// or
// If you need a "Cache" file
myExternalFile = new File(this.getCacheDir() ,"name_of_your_file.txt");

Android文件系統上面文件的位置是:
#Persistent /data/data/com.test.megatest/files
(任何文件管理器應用程序)/Android/data/com.test.megatest/files

#Cache /data/data/com.test.megatest/cache
(任何文件管理器應用程序)/Android/data/com.test.megatest/files


參考:
1) java.io.FileOutputStream - > FileOutputStream(文件文件)公共構造函數
" “創建一個文件輸出流以寫入

將文件初始化為

File myExternalFile=new File("SampleFile.txt");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM