猿问

尝试在 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);

    }

}


慕尼黑5688855
浏览 99回答 1
1回答

慕容708150

我首先想到的是这一行:public class MainActivity extends AppCompatActivity {&nbsp; &nbsp; String filename ="Testing-app-file.txt";&nbsp; &nbsp; File path= this.getFilesDir();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// <<< This line您在类定义中定义path内联,这相当于在MainActivity()构造函数中设置它。这是在活动生命周期开始之前,因此this还不Context存在。您将需要path稍后在活动生命周期中定义,例如在onCreate():public class MainActivity extends AppCompatActivity {&nbsp; &nbsp; String filename ="Testing-app-file.txt";&nbsp; &nbsp; File path;&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.activity_main);&nbsp; &nbsp; &nbsp; &nbsp; path = this.getFilesDir();&nbsp; &nbsp; }&nbsp; &nbsp; ...
随时随地看视频慕课网APP

相关分类

Java
我要回答