我已经在权限文件中加入了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>和<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>权限了,但是还是抛出java.lang.NullPointerException
我的源码如下,功能是想把SD卡里有图片的文件夹都放进ArrayList里面的,我在javaproject里面运行算法是可以的,但是到S虚拟机里面就不可以了。import java.io.File;
import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.GridView;
import learn.demo.GridViewAdapter;
public class MyGridViewimp extends Activity {
private GridView gridview = null;
private ArrayList<File> list = new ArrayList<File>();
//private ArrayList<File> s_list = new ArrayList<File>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
boolean isImafile = false; //如果该文件有一个Image了,就不能向list里加了
this.gridview = (GridView) super.findViewById(R.id.gridview);
//帮忙的人从这里看其,我是想获得SD卡里有图片的文件夹
File[] fs = new File(Environment.getExternalStorageDirectory().toString()).listFiles();
for(int i=0; i<fs.length; i++) {
Log.i("My", fs[i].getAbsolutePath());
if(!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if(isImafile==false && isImage(fs[i])){
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
gridview.setAdapter(new GridViewAdapter(this,list)) ;
} private void findImage(String path) {
File file = new File(path);
if (!file.isFile()) {
boolean isImafile = false;
File[] fs = file.listFiles();
for (int i = 0; i < fs.length; i++) {
if (!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if (isImafile == false && isImage(fs[i])) {
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
}
} private boolean isImage(File file) { //判断该文件是否未图片文件
String path = file.getName();
String end = path
.substring(path.lastIndexOf(".") + 1, path.length())
.toLowerCase();
if(end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
return true;
}
return false;
}
}其异常未
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): FATAL EXCEPTION: main
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): java.lang.RuntimeException: Unable to start activity ComponentInfo{learn.demo/learn.demo.MyGridViewimp}: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Looper.loop(Looper.java:123)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invoke(Method.java:521)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at dalvik.system.NativeStart.main(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): Caused by: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.findImage(MyGridViewimp.java:41)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.onCreate(MyGridViewimp.java:28)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): ... 11 more
04-24 11:23:37.786: WARN/ActivityManager(59): Force finishing activity learn.demo/.MyGridViewimp
04-24 11:23:38.296: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{44f5ea18 learn.demo/.MyGridViewimp}
04-24 11:23:40.546: WARN/InputManagerService(59): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@450ae178
我的源码如下,功能是想把SD卡里有图片的文件夹都放进ArrayList里面的,我在javaproject里面运行算法是可以的,但是到S虚拟机里面就不可以了。import java.io.File;
import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.GridView;
import learn.demo.GridViewAdapter;
public class MyGridViewimp extends Activity {
private GridView gridview = null;
private ArrayList<File> list = new ArrayList<File>();
//private ArrayList<File> s_list = new ArrayList<File>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
boolean isImafile = false; //如果该文件有一个Image了,就不能向list里加了
this.gridview = (GridView) super.findViewById(R.id.gridview);
//帮忙的人从这里看其,我是想获得SD卡里有图片的文件夹
File[] fs = new File(Environment.getExternalStorageDirectory().toString()).listFiles();
for(int i=0; i<fs.length; i++) {
Log.i("My", fs[i].getAbsolutePath());
if(!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if(isImafile==false && isImage(fs[i])){
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
gridview.setAdapter(new GridViewAdapter(this,list)) ;
} private void findImage(String path) {
File file = new File(path);
if (!file.isFile()) {
boolean isImafile = false;
File[] fs = file.listFiles();
for (int i = 0; i < fs.length; i++) {
if (!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if (isImafile == false && isImage(fs[i])) {
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
}
} private boolean isImage(File file) { //判断该文件是否未图片文件
String path = file.getName();
String end = path
.substring(path.lastIndexOf(".") + 1, path.length())
.toLowerCase();
if(end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
return true;
}
return false;
}
}其异常未
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): FATAL EXCEPTION: main
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): java.lang.RuntimeException: Unable to start activity ComponentInfo{learn.demo/learn.demo.MyGridViewimp}: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Looper.loop(Looper.java:123)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invoke(Method.java:521)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at dalvik.system.NativeStart.main(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): Caused by: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.findImage(MyGridViewimp.java:41)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.onCreate(MyGridViewimp.java:28)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): ... 11 more
04-24 11:23:37.786: WARN/ActivityManager(59): Force finishing activity learn.demo/.MyGridViewimp
04-24 11:23:38.296: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{44f5ea18 learn.demo/.MyGridViewimp}
04-24 11:23:40.546: WARN/InputManagerService(59): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@450ae178
解决方案 »
- acitivtyA启动后模拟home键隐藏,需要在acitivtyA中启动acitivtyB并让其显示,如何实现呢?
- 一个类引用另一个类的方法
- android应用的界面入口如何定位
- 如何实现向Android自带的通讯录中的联系人按照拼音首字母(A,B,C,D......)分组分类
- 关于页面传值的问题
- 加入机锋统计SDK后程序运行出错
- android 2.2原生浏览器出现白屏遮挡问题
- android 修改文件属性
- Android应用程序是否支持补丁更新
- Android约束性布局ConstraintLayout性能真的比RelativeLayout高吗?
- 困惑已久的Android问题!!!
- 无法启动运行andriod 的虚拟机
此文件就是 MyGridViewimp.java最多还有是GridViewAdapter(this,list).java为
package learn.demo;import java.io.File;
import java.util.ArrayList;import android.content.Context;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.net.Uri;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListAdapter;public class GridViewAdapter implements ListAdapter {
private Context context= null;
private ArrayList<File> list = new ArrayList<File>();
public GridViewAdapter(Context context, ArrayList<File> list) {
this.context = context;
this.list= list;
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
} @Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
return false;
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int position) {
return position;
} @Override
public long getItemId(int position) {
return position;
} @Override
public int getItemViewType(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageButton mybut = new ImageButton(this.context);
mybut.setBackgroundColor(Color.RED);
mybut.setImageURI(Uri.parse(list.get(position).getAbsolutePath()));
return mybut;
} @Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 0;
} @Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
} @Override
public boolean isEmpty() {
if(list.isEmpty()) {
return true;
}
return false;
} @Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub } @Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub }}