2012-01-31 5 views
0

Эти ошибки появляются при входе пользователя в систему, а затем в следующей деятельности в ListView потребности читать все названия из базы данных и их отображения:проблемы с андроида ListView

LogCat:

01-30 12:52:57.405: E/AndroidRuntime(2905): FATAL EXCEPTION: main 
01-30 12:52:57.405: E/AndroidRuntime(2905): java.lang.NullPointerException 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.AbsListView.obtainView(AbsListView.java:1294) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1198) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.ListView.onMeasure(ListView.java:1109) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.View.measure(View.java:8171) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:563) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:378) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.View.measure(View.java:8171) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.View.measure(View.java:8171) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:526) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.View.measure(View.java:8171) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.View.measure(View.java:8171) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.os.Looper.loop(Looper.java:123) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-30 12:52:57.405: E/AndroidRuntime(2905):  at dalvik.system.NativeStart.main(Native Method) 

I в проблема в том, где-то здесь:

package com.todo; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class Todo extends ListActivity implements OnClickListener{ 
    private Button add,delete,search,exit; 
    private Intent intent; 
    private ListView listView; 
    DatabaseHelper db; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     db=new DatabaseHelper(this); 
     db.open(); 
     setupViews(); 
     db.close(); 

    } 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.main_add_btn: 
      //open activity to add item 
      intent=new Intent(this, InsertItem.class); 
      startActivity(intent); 

      break; 
     case R.id.main_delete_btn: 
      //delete item 
      break; 
     case R.id.main_exit_btn: 
      finish(); 
      break; 

     } 

    } 
    private void setupViews(){ 
     add=(Button) findViewById(R.id.main_add_btn); 
     delete=(Button) findViewById(R.id.main_delete_btn); 
     search=(Button) findViewById(R.id.main_search_btn); 
     exit=(Button) findViewById(R.id.main_exit_btn); 
     add.setOnClickListener(this); 
     delete.setOnClickListener(this); 
     search.setOnClickListener(this); 
     exit.setOnClickListener(this); 
     listView=getListView(); 
//  int l=(int) intent.getLongExtra("userID", -1);  
     Log.v("test","tuja"); 
     ; 
     ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,db.GetAllItems(1)); 
//  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
//    android.R.layout.simple_list_item_1, db.GetAllItems(1)); 
     Log.v("test","tuja2"); 
     setListAdapter(adapter); 

    } 
} 

и функция GetAllItems:

public String[] GetAllItems(int userID) { 
     Cursor cur = database.query(true, "todoItems", 
       new String[] { "title" }, "userID" + "=" + userID, null, null, 
       null, null, null); 
     int i; 
     String arr[] = new String[40]; 
     i = 0; 

     cur.moveToFirst(); 
     while (cur.isAfterLast() == false) { 
      arr[i] = cur.getString(cur.getColumnIndex("title")); 
      Log.v("test", arr[i]); 
      i++; 
      cur.moveToNext(); 
     } 
     return arr; 
    } 

Я пробовал, но не могу найти, где я ошибаюсь.

+0

@ Natali Solved см. Решение ниже – Darko

ответ

0

Удалить эту строку в своем коде setContentView(R.layout.main);, а затем запустить.

+0

Проблема заключалась в том, что массив имел длину 40, а индексы, которые являются нулевыми, могут отображаться списком, и это было ошибкой :) Итак, я подсчитал строки с cur.getCoung(). Решение: 'String arr [] = new String [cur.getCount()];' – Darko

+0

В коде вашего класса вы расширяете ListActivity. У меня также есть исключение Null pointer из-за setcontentview. Как только я удалю, он работает нормально. Вот почему я предлагаю. – Aerrow