慕尼黑5688855
2023-03-09 11:17:50
我正在學習使用用 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
提交
取消