为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 Android 活动中执行简单命令时出错

尝试在 Android 活动中执行简单命令时出错

慕尼黑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();

    }


    ...


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信