Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Android onTouch事件方法上将数据写入文本文件_Android - Fatal编程技术网

无法在Android onTouch事件方法上将数据写入文本文件

无法在Android onTouch事件方法上将数据写入文本文件,android,Android,我尝试使用以下代码将一些数据写入Android(target=Android-21)onTouch事件方法中的文本文件: package com.example.androidwritetxtfile; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import android

我尝试使用以下代码将一些数据写入Android(target=Android-21)onTouch事件方法中的文本文件:

package com.example.androidwritetxtfile;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView textview1;
    String mRootDir;
    File mTemptempDir;
    File mTxtFile;
    PrintWriter pw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textview1 = (TextView) findViewById(R.id.textview1);
        textview1.setText("AndroidWriteTxtFile");

        mRootDir = Environment.getExternalStorageDirectory().toString();
        mTemptempDir = new File(mRootDir + "/temptemp");
        mTxtFile = new File(mTemptempDir, "AndroidWriteTxtFile.txt");

        textview1.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                pw.println("Here onTouch()");
                pw.flush();
                return true;
            }
        });

    }

    @Override
    protected void onResume() {
        super.onResume();
        try {
            pw = new PrintWriter(mTxtFile, "UTF-8");
            pw.println("This is a testing from AndroidWriteTxtFile");
            pw.println("Here onResume()");
            pw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if ( pw != null ) {
            pw.close();
        }
    }

}
该程序编译正常并在我的Android设备上运行。但是,在检查外部存储器中的“AndroidWriteTxtFile.txt”文件后,我发现“Here onResume()”语句确实出现在该文件中,而“Here onTouch()”语句则没有出现

有人知道为什么我在Android onTouch事件方法中无法将数据写入文本文件吗


谢谢您的建议。

您是否有权限在清单中的外部存储中写入?logcat是否显示异常?您是否尝试在调用
println()
之前添加日志语句以确认代码是否正在执行?@Francesco我已在AndroidManifest.xml中编写了以下语句
。此外,出现的“Here onResume()”语句应表明“AndroidWriteTxtFile.txt”文件已正确打开。