java - 尝试在 Android 活动中执行简单命令时出错
问题描述
我正在学习使用用 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);
}
}
解决方案
The first thing that springs out to me is this line:
public class MainActivity extends AppCompatActivity {
String filename ="Testing-app-file.txt";
File path= this.getFilesDir(); // <<< This line
You are defining path
inline within the class definition, which is equivalent to setting it within the MainActivity()
constructor. This is before the Activity Lifecycle has begun, therefore this
as a Context
does not exist yet. You will need to define path
later on in the activity lifecycle, for example during 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();
}
...
推荐阅读
- cudd - BLIF 输入到图形输出(文本和图片)
- x86 - 为什么 LOCK 在 x86 上是一个完整的障碍?
- ios - 与 RadSideDrawer 一起使用时,NativeScript page-router-outlet 在 iOS 上总是占据 100% 的高度
- rust - 如何在匹配结构中设置所需的返回类型?
- xml - 'sequence' 的内容必须匹配注解?,(元素 | 组 | 选择 | 序列 | 任何)*)
- python-3.x - Python比较两个Excel的id值和其他列中的“归档”输出在新excel中相对于ID列的差异
- django - 通过 DRF 通知客户有关事件
- javascript - 将查询从 sqlite3 保存到 node.js 中的数组。带异步功能
- model-view-controller - 基于角色的通知,以及在 MVC 5 中使用 Signalr 的组
- chef-infra - 厨师引导一个未连接到互联网的节点