我试图在内部为另一个应用创建基本文件。所以我写了一个基本的应用来解决问题,然后将其添加到其他应用程序。这是猫的日志
10-09 17:56:14.579: D/dalvikvm(11092): Not late-enabling CheckJNI (already on)
10-09 17:56:15.599: E/Trace(11092): error opening trace file: No such file or directory (2)
10-09 17:56:16.549: D/gralloc_goldfish(11092): Emulator without GPU emulation detected.
10-09 17:57:20.158: D/dalvikvm(11092): Debugger has detached; object registry had 1 entries
10-09 17:57:30.078: E/Trace(11662): error opening trace file: No such file or directory (2)
10-09 17:57:30.759: D/gralloc_goldfish(11662): Emulator without GPU emulation detected.
创建文件。但是,当我实现代码创建一个关闭onClick的文件时,它没有。或者当我将文件创建在主类以外的类中时,它没有创建该文件。
这是我的基本代码: `package com.newapp;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFile();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public String timeStamp(){
Date myDate = new Date();
return (DateFormat.getDateInstance().format(myDate) + " " + DateFormat.getTimeInstance().format(myDate));
}
public void newFile (){
String FILENAME = timeStamp();
String string = "hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}`
我现在摆脱了按钮和其他课程。这是除了他们给你的普通hello worlds屏幕以外的所有代码和一个未经修改的清单。
修改 上面的代码工作i,文件在/data/data/com.newapp/files中创建 再次运行它以确保创建一个文件并从cat中获取。
10-09 17:57:29.482:D / dalvikvm(11662):没有迟到的CheckJNI(已经开启) 10-09 17:57:30.078:E / Trace(11662):错误打开跟踪文件:没有这样的文件或目录(2) 10-09 17:57:30.759:D / gralloc_goldfish(11662):未检测到GPU仿真的仿真器。 10-09 18:53:35.238:D / dalvikvm(11662):调试器已分离;对象注册表有1个条目 10-09 18:53:53.389:E / Trace(14975):错误打开跟踪文件:没有这样的文件或目录(2) 10-09 18:53:54.658:I / Choreographer(14975):跳过36帧!应用程序可能在其主线程上做了太多工作。 10-09 18:53:54.668:D / gralloc_goldfish(14975):未检测到GPU仿真的仿真器。
我现在要将它移到自己的班级并试一试。
这是在自己的类中创建文件: 包com.newapp;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
public class NewFile extends Activity {
public String timeStamp(){
Date myDate = new Date();
return (DateFormat.getDateInstance().format(myDate) + " " + DateFormat.getTimeInstance().format(myDate));
}
public NewFile (){
String FILENAME = timeStamp();
String string = "hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是主要活动:
package com.newapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NewFile firstone = new NewFile();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
最后,我尝试了几种不同的方法来使用NewFile();作为构造函数只是一个常规方法并调用firstone.newFile(); 遇到很多麻烦,它现在甚至不能在虚拟设备或平板电脑上运行。
答案 0 :(得分:1)
我在朋友的帮助下找出了问题所在。 您不能在新课程中“扩展活动”。 您需要使用上下文来引用该类。 NewFile类的最终代码是:
package com.newapp;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.content.Context;
public class NewFile{
public String timeStamp(){
Date myDate = new Date();
return (DateFormat.getDateInstance().format(myDate) + " " + DateFormat.getTimeInstance().format(myDate));
}
public void createFile(Context c) throws IOException{
String FILENAME = timeStamp();
String string = "hello world!";
FileOutputStream fos = c.openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
}
}
在主要课程中你只需要打电话:
NewFile firstfile = new NewFile();
firstfile.createFile(getBaseContext());
在onCreate方法中。
由于