我正在学习使用用 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); }}
1 回答
慕容708150
TA贡献1831条经验 获得超4个赞
我首先想到的是这一行:
public class MainActivity extends AppCompatActivity {
String filename ="Testing-app-file.txt";
File path= this.getFilesDir(); // <<< This line
您在类定义中定义path内联,这相当于在MainActivity()构造函数中设置它。这是在活动生命周期开始之前,因此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();
}
...
添加回答
举报
0/150
提交
取消