2015-09-22 2 views
0

У меня есть код, когда я пытаюсь переместить значение списка в массив String, но эта ошибкаПопытка чтения из пустого массива

java.lang.NullPointerException: Попытка чтения из пустого массива

Этот это код

public class MainActivity extends Activity { 

    private GridView gridView; 
    private GridviewAdapter gridAdapter; 
    ArrayList<Integer> list = new ArrayList<Integer>(); 

    private static List<Integer> randomNumber; 
    private int endRange; 
    String[] strarray1; 

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

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

     StrictMode.setThreadPolicy(policy); 


     //Obtenemos la referencia de la vista 
     gridView = (GridView) findViewById(R.id.gridView); 


     //********************************************** 

    // getUrl("http://imgwslili.gtcine.com/index.html", "0"); 

     endRange = getUrl("http://imgwslili.gtcine.com/value.txt"); 


     //******************************************************** 

     randomNumber = new ArrayList<Integer>(endRange); 

     System.out.println("IMPRIMIR0 " + endRange); 

     endRange = endRange-100; 
    int j=100; 
     for (int i = 0; i <=endRange; i++) { 
      randomNumber.add(j); 
j++; 
     // System.out.println("IMPRIMIR " + randomNumber.get(i)); 
     } 
     System.out.println("IMPRIMIR1 " + randomNumber.size()); 



     Collections.shuffle(randomNumber); 
     // System.out.println("IMPRIMIR2 " + randomNumber.get(5)); 

     strarray1 = getitem(); 


     //Construimos el adaptador pasando como 
     //segundo parametro el array de imagenes 
     gridAdapter = new GridviewAdapter(MainActivity.this, getitem()); 

     //Especificamos el adaptador 
     gridView.setAdapter(gridAdapter); 

     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       System.out.println("ENVIAR " + position); 
       Toast.makeText(getBaseContext(), "Salida pos: "+position,Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(MainActivity.this, ActivityTwo.class); 
       intent.putExtra("position", position); 
       startActivity(intent); 
      } 
     }); 



    } 



    public String[] getitem(){ 
     List<String> strlist = new ArrayList<String>(); 

     // endRange= endRange-100; 
     int j = 100; 
     for(int i= 0; i<endRange; i++){ 

       strlist.add("http://imgwslili.gtcine.com/img" + randomNumber.get(i) + ".jpg"); 
       System.out.println("URL " + "http://imgwslili.gtcine.com/img" + randomNumber.get(i) + ".jpg"); 


     } 

     // System.out.println("URL " + "http://img.gtcine.com/img" + randomNumber.get(j) + ".jpg"); 
     String[] strarray = new String[strlist.size()+1]; 
     strlist.toArray(strarray); 
     System.out.println("IMPRIME " + strarray.toString()); 
     return strarray; // 
    } 


    public String getpost(int post){ 

     String hola[] = strarray1; 
     System.out.print(hola); 
     System.out.println("GetPost " + post); 
     return strarray1[post]; 
    } 

Я потерял я новичок в Android я хочу показать Imagen из интернета и работать нормально, но когда я выбираю Imagen из галереи, показанной эту ошибку: java.lang.NullPointerException: попытка чтение из нулевого массива

+0

похоже Hola [] равна нулю. Где вы инициализировали strarray1? Разве вы не хотели делать String hola [] = getItem(); ? – denker

+0

@ Heisenberg06 Я не вижу, как strarray1 заполняется методом getPost() ... не могли бы вы объяснить? – vijay

+0

Я добавлю еще код полного класса – Heisenberg06

ответ

0

сделать это изменения в свой код и он может работать:

strarray = strlist.toArray(strarray); 

String hola[] = strarray1.clone(); 
+0

ничего:/показать эту ошибку java.lang.NullPointerException: попытаться вызвать виртуальный метод 'java.lang.Object java.lang.String []. Clone()' на нуле ссылка на объект – Heisenberg06

1

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

public static void main(String[] args){ 


     System.out.println("Result: " + getpost(1)); 
    } 



    public static String[] getitem(){ 
     List<String> strlist = new ArrayList<String>(); 

     // endRange= endRange-100; 
     int j = 100; 
     for(int i= 0; i<j; i++){ 

       strlist.add("http://ime.com/img" + i + ".jpg"); 


     } 


     String[] strarray = new String[strlist.size()+1]; 
     strlist.toArray(strarray); 
     System.out.println("IMPRIME " + strarray); 
     return strarray; // 
    } 


    public static String getpost(int post){ 

     String hola[] = getitem(); //HERE I CALL getitem() 
     System.out.print(hola); 
     System.out.println("GetPost " + post); 
     return hola[post]; 
    } 
+0

Могу ли я добавить вас в скайп, пожалуйста :( – Heisenberg06

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