Android应用程序错误NullPointerException异常? [英] Android app error NullPointerException?
本文介绍了Android应用程序错误NullPointerException异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图做一个Android应用程序,当一个按钮被点击进入手机的目录中,可以打开一个文件。这里是code我到目前为止有:
包com.open1;进口的java.io.File;
进口java.io.FileInputStream中;
进口java.io.FileNotFoundException;
进口java.io.IOException异常;进口android.os.Bundle;
进口android.app.Activity;
进口android.view.Menu;
进口android.view.View;
进口android.widget.Button;
进口android.widget.Toast;
进口android.view.View.OnClickListener;公共类MainActivity延伸活动{ @覆盖 保护无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_main); } @覆盖 公共布尔onCreateOptionsMenu(菜单菜单){ //充气菜单;如果是present这增加了项目操作栏。 。getMenuInflater()膨胀(R.menu.main,菜单); Button按钮=(按钮)findViewById(R.id.button1); button.setOnClickListener(新OnClickListener(){ @覆盖 公共无效的onClick(查看视图){ Toast.makeText(MainActivity.this,单击按钮,Toast.LENGTH_SHORT).show(); //获取文件目录
文件列表= this.getFilesDir(); 的FileInputStream的InputStream = NULL; 字节[]字节=新字节[500]; INT fileIdx = -1; 对于(字符串列表:lister.list()){
fileIdx ++;
如果(list.endsWith(DDD)){
文件file = lister.listFiles()[fileIdx];
尝试{
的InputStream =新的FileInputStream(文件);
字节=新的字节[inputStream.available()];
inputStream.read(字节);
}赶上(FileNotFoundException异常五){
e.printStackTrace();
}赶上(IOException异常五){
e.printStackTrace();}
最后{
如果(的InputStream!= NULL){
尝试{
inputStream.close();
}赶上(IOException异常五){
e.printStackTrace();
}
}
}
}
} } 私人文件getFilesDir(){
// TODO自动生成方法存根
返回null;
} }); 返回true; }}
我可以看到错误,但无法做出如何解决这些问题的感觉。这里是logcat的:
12月8日至22日:54:34.447:E /跟踪(22072):错误打开跟踪文件:没有这样的文件或目录(2)
十二月8日至22日:54:34.778:D / libEGL(22072):加载/system/lib/egl/libEGL_mali.so
十二月8日至22日:54:34.778:D / libEGL(22072):加载/system/lib/egl/libGLESv1_CM_mali.so
十二月8日至22日:54:34.788:D / libEGL(22072):加载/system/lib/egl/libGLESv2_mali.so
十二月8日至22日:54:34.828:D / OpenGLRenderer(22072):启用调试模式0
08-22 13:01:03.667:E /跟踪(22765):错误打开跟踪文件:没有这样的文件或目录(2)
08-22 13:01:03.817:D / libEGL(22765):加载/system/lib/egl/libEGL_mali.so
08-22 13:01:03.837:D / libEGL(22765):加载/system/lib/egl/libGLESv1_CM_mali.so
08-22 13:01:03.837:D / libEGL(22765):加载/system/lib/egl/libGLESv2_mali.so
08-22 13:01:03.887:D / OpenGLRenderer(22765):启用调试模式0
08-22 13:01:05.699:D / AndroidRuntime(22765):关闭VM
08-22 13:01:05.699:W / dalvikvm(22765):主题ID = 1:螺纹未捕获的异常退出(组= 0x417de318)
08-22 13:01:05.709:E / AndroidRuntime(22765):致命异常:主要
08-22 13:01:05.709:E / AndroidRuntime(22765):显示java.lang.NullPointerException
08-22 13:01:05.709:E / AndroidRuntime(22765):在com.open1.MainActivity $ 1.onClick(MainActivity.java:65)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.view.View.performClick(View.java:4103)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.view.View $ PerformClick.run(View.java:17117)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.os.Handler.handleCallback(Handler.java:615)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.os.Handler.dispatchMessage(Handler.java:92)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.os.Looper.loop(Looper.java:137)
08-22 13:01:05.709:E / AndroidRuntime(22765):在android.app.ActivityThread.main(ActivityThread.java:4744)
08-22 13:01:05.709:E / AndroidRuntime(22765):在java.lang.reflect.Method.invokeNative(本机方法)
08-22 13:01:05.709:E / AndroidRuntime(22765):在java.lang.reflect.Method.invoke(Method.java:511)
08-22 13:01:05.709:E / AndroidRuntime(22765):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
08-22 13:01:05.709:E / AndroidRuntime(22765):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-22 13:01:05.709:E / AndroidRuntime(22765):在dalvik.system.NativeStart.main(本机方法)
08-22 13:01:08.722:I /流程(22765):发送信号。 PID:22765 SIG:9
解决方案
您的方法
私人文件getFilesDir(){
// TODO自动生成方法存根
返回null;
}
收益空
的返回值,然后使用此:
文件列表= this.getFilesDir();
...
>>>>对于(字符串列表:lister.list()){
您显然是引用一个对象(这里:利斯特
)已初始化空
护理使用调试器和/或在你的 TODO
意见的工作?
I am trying to make an android app that when a button is clicked goes into the phones' directory and can open a file. Here is the code I have so far:
package com.open1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
// get the files directory
File lister = this.getFilesDir();
FileInputStream inputStream = null;
byte[] bytes = new byte[500];
int fileIdx = -1;
for (String list : lister.list()){
fileIdx++;
if(list.endsWith("ddd")){
File file = lister.listFiles()[fileIdx];
try {
inputStream = new FileInputStream(file);
bytes = new byte[inputStream.available()];
inputStream.read(bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();}
finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
private File getFilesDir() {
// TODO Auto-generated method stub
return null;
}
});
return true;
}
}
I can see the errors but can't make sense of how to fix them. Here is the logcat:
08-22 12:54:34.447: E/Trace(22072): error opening trace file: No such file or directory (2)
08-22 12:54:34.778: D/libEGL(22072): loaded /system/lib/egl/libEGL_mali.so
08-22 12:54:34.778: D/libEGL(22072): loaded /system/lib/egl/libGLESv1_CM_mali.so
08-22 12:54:34.788: D/libEGL(22072): loaded /system/lib/egl/libGLESv2_mali.so
08-22 12:54:34.828: D/OpenGLRenderer(22072): Enabling debug mode 0
08-22 13:01:03.667: E/Trace(22765): error opening trace file: No such file or directory (2)
08-22 13:01:03.817: D/libEGL(22765): loaded /system/lib/egl/libEGL_mali.so
08-22 13:01:03.837: D/libEGL(22765): loaded /system/lib/egl/libGLESv1_CM_mali.so
08-22 13:01:03.837: D/libEGL(22765): loaded /system/lib/egl/libGLESv2_mali.so
08-22 13:01:03.887: D/OpenGLRenderer(22765): Enabling debug mode 0
08-22 13:01:05.699: D/AndroidRuntime(22765): Shutting down VM
08-22 13:01:05.699: W/dalvikvm(22765): threadid=1: thread exiting with uncaught exception (group=0x417de318)
08-22 13:01:05.709: E/AndroidRuntime(22765): FATAL EXCEPTION: main
08-22 13:01:05.709: E/AndroidRuntime(22765): java.lang.NullPointerException
08-22 13:01:05.709: E/AndroidRuntime(22765): at com.open1.MainActivity$1.onClick(MainActivity.java:65)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.view.View.performClick(View.java:4103)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.view.View$PerformClick.run(View.java:17117)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.os.Handler.handleCallback(Handler.java:615)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.os.Looper.loop(Looper.java:137)
08-22 13:01:05.709: E/AndroidRuntime(22765): at android.app.ActivityThread.main(ActivityThread.java:4744)
08-22 13:01:05.709: E/AndroidRuntime(22765): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 13:01:05.709: E/AndroidRuntime(22765): at java.lang.reflect.Method.invoke(Method.java:511)
08-22 13:01:05.709: E/AndroidRuntime(22765): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-22 13:01:05.709: E/AndroidRuntime(22765): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-22 13:01:05.709: E/AndroidRuntime(22765): at dalvik.system.NativeStart.main(Native Method)
08-22 13:01:08.722: I/Process(22765): Sending signal. PID: 22765 SIG: 9
解决方案
Your method
private File getFilesDir() {
// TODO Auto-generated method stub
return null;
}
returns null
whose return value is then used here:
File lister = this.getFilesDir();
...
>>>> for (String list : lister.list()){
You are obviously referencing an object (here: lister
) that has been initialized with null
.
Care to use a debugger and/or working on your TODO
comments?
这篇关于Android应用程序错误NullPointerException异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文