亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試在 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 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號