При загрузке всех файлов, содержащих изображения и видео с SD-карты, и показано в gridview, это то, что мой сценарий, поэтому при работе с файлами я получаю runtimeexception.java.lang.Runtime Exception?
Это мой код
MainActivity класс
AsyncTaskLoadFiles myAsyncTaskLoadFiles;
ImageAdapter myImageAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridView gridview = (GridView) findViewById(R.id.gridView1);
myImageAdapter = new ImageAdapter(this);
gridview.setAdapter(myImageAdapter);
myAsyncTaskLoadFiles = new AsyncTaskLoadFiles(myImageAdapter);
myAsyncTaskLoadFiles.execute();
Asyncloadfiles:
File targetDirector;
ImageAdapter myTaskAdapter;
public AsyncTaskLoadFiles(ImageAdapter adapter) {
myTaskAdapter = adapter;
}
@Override
protected void onPreExecute() {
String ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory().getAbsolutePath();
String targetPath = ExternalStorageDirectoryPath + "/test/";
targetDirector = new File(targetPath);
myTaskAdapter.clear();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
File[] files = targetDirector.listFiles();
for (File file : files) {
publishProgress(file.getAbsolutePath());
if (isCancelled())
break;
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
myTaskAdapter.add(values[0]);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Void result) {
myTaskAdapter.notifyDataSetChanged();
super.onPostExecute(result);
}
}
ImageAdapter:
private Context mContext;
ArrayList<String> itemList = new ArrayList<String>();
public ImageAdapter(Context c) {
mContext = c;
}
void add(String path) {
itemList.add(path);
}
void clear() {
itemList.clear();
}
void remove(int index) {
itemList.remove(index);
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return itemList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null)
{ // if it's not recycled, initialize some
// attributes
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
Picasso.with(mContext).load(itemList.get(position)).into(imageView);
return imageView;
}
Пожалуйста, вы можете сказать мне, что это ошибка в приведенном выше коде.
Это ошибка logcat.
11-15 11:07:38.760: E/AndroidRuntime(779): FATAL EXCEPTION: AsyncTask #1
11-15 11:07:38.760: E/AndroidRuntime(779): java.lang.RuntimeException: An error occured while executing doInBackground()
11-15 11:07:38.760: E/AndroidRuntime(779): at android.os.AsyncTask$3.done(AsyncTask.java:278)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-15 11:07:38.760: E/AndroidRuntime(779): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.lang.Thread.run(Thread.java:856)
11-15 11:07:38.760: E/AndroidRuntime(779): Caused by: java.lang.NullPointerException
11-15 11:07:38.760: E/AndroidRuntime(779): at com.example.picasagrid.MainActivity$AsyncTaskLoadFiles.doInBackground(MainActivity.java:54)
11-15 11:07:38.760: E/AndroidRuntime(779): at com.example.picasagrid.MainActivity$AsyncTaskLoadFiles.doInBackground(MainActivity.java:1)
11-15 11:07:38.760: E/AndroidRuntime(779): at android.os.AsyncTask$2.call(AsyncTask.java:264)
11-15 11:07:38.760: E/AndroidRuntime(779): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-15 11:07:38.760: E/AndroidRuntime(779): ... 5 more
Можете ли вы добавить точное сообщение об ошибке и stacktrace к своему вопросу? – sherb
отправил мою ошибку тоже .. – Hari
@ Haritha_90 вы видите, что 'Caused by ...' в трассировке стека? Это поможет вам найти проблему? – sherb