2013-03-18 17 views
0

Я новичок в разработке android. Я загрузил исходный файл из следующей ссылкеjava.lang.NullPointerException при запуске приложения

«http://android-er.blogspot.in/2012/07/implement-custom-linearlayout-for.html», но при попытке запуска в эмуляторе это показывает

java.lang.NullPointerException at com.example.androidhorizontalscrollviewgallery.MainActivity.onCreate(MainActivity.java:27) 

Мой MainActivity.java код ниже:

package com.example.androidhorizontalscrollviewgallery; 

import java.io.File; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 

public class MainActivity extends Activity { 

MyHorizontalLayout myHorizontalLayout; 

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

    myHorizontalLayout = (MyHorizontalLayout)findViewById(R.id.mygallery); 


    File targetDir=getDir("Pictures",Context.MODE_PRIVATE); 

    String targetPath=targetDir+ "/homepage/"; 
    File targetDirector = new File(targetPath); 

    File[] files = targetDirector.listFiles(); 

    for(File f : files){ 

     myHorizontalLayout.add(f.getAbsolutePath()); 
    } 


    } 
} 

Здесь я сохранил мои изображения на моем компьютере в пути «Libraries \ Pictures \ homepage». Я хотел получить изображения в галерее, но не смог. Я не знаю, что вызывает это исключение может кто-нибудь пожалуйста, скажите Решение

+0

Я думаю, что вы получаете targetDir как Null из 'getDir' –

ответ

0

попробовать это ..

File targetDir=getDir("Libraries\Pictures\homepage",Context.MODE_PRIVATE); 
String targetPath=targetDir.toString(); 
0

От исключения, у вас есть нулевой указатель на линии 27, что означает, что файлы объекта, которые вы итерация равна нулю. Вы используете метод listFiles для получения этого объекта, но метод listFiles может возвращать значение null. Вы должны проверить, есть ли у вас нуль или нет, чтобы избежать сбоя вашего приложения. См. Пример ниже. Также обратитесь к разделу File class documentation.

if (files == null) { 
    // handle case where the file object is not a directory 
} 
else { 
for(File f : files){ 
     myHorizontalLayout.add(f.getAbsolutePath()); 
    } 
} 
0

Я думаю вы не можете напрямую получать изображения с вашего компьютера путь.

Вы должны скопируйте это изображение в свою папку с выделением или опросами приложения.

Или ваши изображения должны находиться в либо устройство или эмулятор галереи или любые другие папки. Но это должно быть в устройстве или эмуляторе в том, что вы тестируете.

См. Эту строку в учебнике, которое вы использовали.

String ExternalStorageDirectoryPath = Environment 
     .getExternalStorageDirectory() 
     .getAbsolutePath(); 

String targetPath = ExternalStorageDirectoryPath + "/test/"; 

Так что это SDCard путь вашего устройства - внешний путь хранения.

Смежные вопросы