我正在学习使用Java编写的Android应用程序读写简单的文件。但是我无法解决此初始错误!我想我因为this
而不是上下文而收到此错误。该应用程序编译成功,但是在我的设备上安装后无法打开。
我没有做太多尝试,但是我在这里提供代码。我试图通过编辑文本视图接受一个简单的文本,然后使用“保存”按钮将其保存到Android中的文件中。
package com.example.filemaketest;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
String filename = "Testing-app-file.txt";
File path = this.getFilesDir();
// File file = new File(path, filename);
// FileOutputStream outputStream;
public void save(View view) {
EditText edit = (EditText) findViewById(R.id.infoText);
String info = edit.getText().toString();
Log.i("info", info);
Toast.makeText(this, info + " button Pressed", Toast.LENGTH_LONG).show();
Toast.makeText(this, " Saving", Toast.LENGTH_LONG).show();
// try {
// outputStream = openFileOutput(filename, this.MODE_PRIVATE);
// outputStream.write(info.getBytes());
// outputStream.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
答案 0 :(得分:1)
首先想到的是这一行:
public class MainActivity extends AppCompatActivity {
String filename ="Testing-app-file.txt";
File path= this.getFilesDir(); // <<< This line
您正在类定义中定义path
内联,这等效于在MainActivity()
构造函数中进行设置。这是在Activity Lifecycle开始之前,因此this
作为Context
尚不存在。您稍后需要在活动生命周期中定义path
,例如在onCreate()
期间:
public class MainActivity extends AppCompatActivity {
String filename ="Testing-app-file.txt";
File path;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
path = this.getFilesDir();
}
...