2014-02-01 7 views
0

Я пытаюсь читать значения из базы данных SQLlite в виде списка. я сделал код, он не имеет ошибок, но во время выполнения я получаю ошибку говоря ....RuntimeException: Невозможно запустить Activity ComponentInfo {}: java.lang.NullPointerException. Android

FATAL EXCEPTION: main 
02-01 15:40:31.397: E/AndroidRuntime(10663): java.lang.RuntimeException: Unable to start activity ComponentInfo{lk.adspace.jaffnadb/lk.adspace.jaffnadb.MainActivity}: java.lang.NullPointerException 

может кто-нибудь помочь мне исправить эту ошибку, пожалуйста.

Dbhandler.java файл

package lk.adspace.jaffnadb; 

    import java.util.ArrayList; 


    import android.content.ContentValues; 
    import android.content.Context; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 

    import android.database.sqlite.SQLiteOpenHelper; 
    import android.util.Log; 

    public class Dbhandler extends SQLiteOpenHelper { 


     private static final int DATABASE_VERSION = 1; 

     // Database Name 
     private static final String DATABASE_NAME = "jaffnatempletest"; 

     // Temple table name 
     private static final String TABLE_TEMPLE = "templ"; 


     // Contacts Table Columns names 
     private static final String KEY_ID = "id"; 
     private static final String KEY_TMPNAME = "temple_name"; 
     private static final String KEY_TMPTYPE = "temple_type"; 
     private static final String KEY_LATITUDE = "latitude"; 
     private static final String KEY_LONGITUDE = "longitude"; 
     private static final String KEY_IMGNAME = "image_name"; 
     private static final String KEY_YEARBUILD = "year_build"; 
     private static final String KEY_ADDRESS = "address"; 
     private static final String KEY_CITY = "city"; 
     private static final String KEY_EMAIL = "email"; 
     private static final String KEY_WEB = "website"; 
     private static final String KEY_TEL1 = "telephone1"; 
     private static final String KEY_TEL2 = "telephone2"; 
     private static final String KEY_DESCRI = "Description"; 
     private final ArrayList<kovil> temple_list = new ArrayList<kovil>(); 


     public Dbhandler (Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 



     // Creating Tables 
     @Override 
     public void onCreate(SQLiteDatabase db) { 
     String CREATE_TEMPLE_TABLE = "CREATE TABLE " + TABLE_TEMPLE + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + KEY_TMPNAME + " TEXT," + KEY_TMPTYPE + " TEXT," + KEY_LATITUDE + " TEXT," + KEY_LONGITUDE + " TEXT," + KEY_IMGNAME + " TEXT," 
      + KEY_YEARBUILD + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_CITY + " TEXT," + KEY_EMAIL + " TEXT," + KEY_WEB + " TEXT," + KEY_TEL1 + " TEXT," + KEY_TEL2 + " TEXT," 
      + KEY_DESCRI + " TEXT" + ")"; 
     db.execSQL(CREATE_TEMPLE_TABLE); 
     } 


     // Upgrading database 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEMPLE); 

     // Create tables again 
     onCreate(db); 
     } 



     // Adding new temple 
     public void Add_Temple(kovil Kovil) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 

     values.put(KEY_TMPNAME, Kovil.gettemplename()); 
     values.put(KEY_TMPTYPE, Kovil.gettempletype()); 
     values.put(KEY_LATITUDE, Kovil.getlatitude()); 
     values.put(KEY_LONGITUDE, Kovil.getlongitude()); 
     values.put(KEY_IMGNAME, Kovil.getimage_name()); 
     values.put(KEY_YEARBUILD, Kovil.getyear_build()); 
     values.put(KEY_ADDRESS, Kovil.getaddress()); 
     values.put(KEY_CITY, Kovil.getcity()); 
     values.put(KEY_EMAIL, Kovil.getemail()); 
     values.put(KEY_WEB, Kovil.getwebsite()); 
     values.put(KEY_TEL1, Kovil.gettelephone1()); 
     values.put(KEY_TEL2, Kovil.gettelephone2()); 
     values.put(KEY_DESCRI, Kovil.getDescription()); 

     // Inserting Row 
     db.insert(TABLE_TEMPLE, null, values); 
     db.close(); // Closing database connection 
     } 






     // Getting single contact 
     kovil Get_Temple(int id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_TEMPLE, new String[] { KEY_ID, 
       KEY_TMPNAME, KEY_TMPTYPE, KEY_LATITUDE, KEY_LONGITUDE, KEY_IMGNAME, KEY_YEARBUILD, KEY_ADDRESS, KEY_CITY, KEY_EMAIL, KEY_EMAIL, KEY_WEB, KEY_TEL1, KEY_TEL2, KEY_DESCRI }, KEY_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, null); 
     if (cursor != null) 
      cursor.moveToFirst(); 

     kovil Kovil = new kovil(Integer.parseInt(cursor.getString(0)), 
      cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8), cursor.getString(9), cursor.getString(10), cursor.getString(11), cursor.getString(12), cursor.getString(13)); 
     // return contact 
     cursor.close(); 
     db.close(); 

     return Kovil; 
     } 





     // Getting All Contacts 
     public ArrayList<kovil> Get_Temple() { 
     try { 
      temple_list.clear(); 

      // Select All Query 
      String selectQuery = "SELECT * FROM " + TABLE_TEMPLE; 

      SQLiteDatabase db = this.getWritableDatabase(); 
      Cursor cursor = db.rawQuery(selectQuery, null); 

      // looping through all rows and adding to list 
      if (cursor.moveToFirst()) { 
      do { 
       kovil Kovil = new kovil(); 
       Kovil.setID(Integer.parseInt(cursor.getString(0))); 
       Kovil.settemplename(cursor.getString(1)); 
       Kovil.settempletype(cursor.getString(2)); 
       Kovil.setlatitude(cursor.getString(3)); 
       Kovil.setlongitude(cursor.getString(4)); 
       Kovil.setimage_name(cursor.getString(5)); 
       Kovil.setyear_build(cursor.getString(6)); 
       Kovil.setaddress(cursor.getString(7)); 
       Kovil.setcity(cursor.getString(8)); 
       Kovil.setemail(cursor.getString(9)); 
       Kovil.setwebsite(cursor.getString(10)); 
       Kovil.settelephone1(cursor.getString(11)); 
       Kovil.settelephone2(cursor.getString(12)); 
       Kovil.setDescription(cursor.getString(13)); 



       // Adding contact to list 
       temple_list.add(Kovil); 
      } while (cursor.moveToNext()); 
      } 

      // return contact list 
      cursor.close(); 
      db.close(); 
      return temple_list; 
     } catch (Exception e) { 
      // TODO: handle exception 
      Log.e("all_temples", "" + e); 
     } 

     return temple_list; 
     } 




     // Getting contacts Count 
     public int Get_Total_Temple() { 
      String countQuery = "SELECT * FROM " + TABLE_TEMPLE; 
      SQLiteDatabase db = this.getReadableDatabase(); 
      Cursor cursor = db.rawQuery(countQuery, null); 
      int count = cursor.getCount(); 
      cursor.close(); 
      db.close(); 
      return count; 
     } 


    } 

MainActivity.java файл

package lk.adspace.jaffnadb; 

    import java.util.ArrayList; 




    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.view.Menu; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 



     Temple_Adapter tAdapter; 

     ArrayList<kovil> temple_data = new ArrayList<kovil>(); 
     ListView temple_listview; 
     Dbhandler dbhand = new Dbhandler(this); 



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


         kovil insertData = new kovil("temple_name", "temple_type", "latitude", "longitude", "image_name", "year_build", "address", 
           "city", "email", "website", "telephone1", "telephone2", "Description"); 
          Dbhandler dbhand = new Dbhandler(this); 
          dbhand .Add_Temple(insertData); 


          kovil insertData2 = new kovil("temple_name", "temple_type", "latitude", "longitude", "image_name", "year_build", "address", 
            "city", "email", "website", "telephone1", "telephone2", "Description"); 

           dbhand .Add_Temple(insertData2); 

           int count =dbhand .Get_Total_Temple(); 

          TextView textView = (TextView) findViewById(R.id.count); 
          textView.setText(Integer.toString(count)); 


          // i want to display all the values in a list over here. 

         View_all_temples(); 


        } 



        public void View_all_temples(){ 


         temple_data.clear(); 
         ArrayList<kovil> temple_array_from_db = dbhand.Get_Temple(); 

         for (int i = 0; i < temple_array_from_db.size(); i++) { 

          int tidno = temple_array_from_db.get(i).getID(); 
          String tempname = temple_array_from_db.get(i).gettemplename(); 
          String city = temple_array_from_db.get(i).getcity(); 
          String telphon = temple_array_from_db.get(i).gettelephone1(); 
          kovil kov = new kovil(); 
          kov.setID(tidno); 
          kov.settemplename(tempname); 
          kov.setcity(city); 
          kov.settelephone1(telphon); 

          temple_data.add(kov); 
         } 
         dbhand.close(); 
         tAdapter = new Temple_Adapter(MainActivity.this, R.layout.activity_main); 
         temple_listview.setAdapter(tAdapter); 
         tAdapter.notifyDataSetChanged(); 


        } 



        public class Temple_Adapter extends ArrayAdapter<kovil> { 
         public Temple_Adapter(Context context, 
           int textViewResourceId) { 
          super(context, textViewResourceId); 
          // TODO Auto-generated constructor stub 
         } 



         Activity activity; 
         int layoutResourceId; 
         kovil user; 
         ArrayList<kovil> data = new ArrayList<kovil>(); 

         public void Temple_Adapter_Adapter(Activity act, int layoutResourceId, 
          ArrayList<kovil> data) { 
          this.layoutResourceId = layoutResourceId; 
          this.activity = act; 
          this.data = data; 
          notifyDataSetChanged(); 
         } 

        } 

        @Override 
        public boolean onCreateOptionsMenu(Menu menu) { 
         // Inflate the menu; this adds items to the action bar if it is present. 
         getMenuInflater().inflate(R.menu.main, menu); 
         return true; 
        } 

       } 

Kovil.java файл

package lk.adspace.jaffnadb; 

    public class kovil { 

     //public variables 
     public int _id; 
     public String _temple_name; 
     public String _temple_type; 
     public String _latitude; 
     public String _longitude; 
     public String _image_name; 
     public String _year_build; 
     public String _address; 
     public String _city; 
     public String _email; 
     public String _website; 
     public String _telephone1; 
     public String _telephone2; 
     public String _Description; 

     //empty constructor 
     public kovil(){ 

     } 


     // int id, String temple_name, String temple_type, String latitude, String longitude, String image_name, String year_build, String address, String city, String email, String website, String telephone1, String telephone2, String Description 


     public kovil(int id, String temple_name, String temple_type, String latitude, String longitude, String image_name, String year_build, String address, 
       String city, String email, String website, String telephone1, String telephone2, String Description) { 
      // TODO Auto-generated constructor stub 



       this._id= id; 
       this._temple_name=temple_name; 
       this._temple_type=temple_type; 
       this._latitude=latitude; 
       this._longitude=longitude; 
       this._image_name=image_name; 
       this._year_build=year_build; 
       this._address=address; 
       this._city=city; 
       this._email=email; 
       this._website=website; 
       this._telephone1=telephone1; 
       this._telephone2=telephone2; 
       this._Description=Description; 

     } 



     public kovil(String temple_name, String temple_type, String latitude, String longitude, String image_name, String year_build, String address, 
       String city, String email, String website, String telephone1, String telephone2, String Description) { 
      // TODO Auto-generated constructor stub 

       this._temple_name=temple_name; 
       this._temple_type=temple_type; 
       this._latitude=latitude; 
       this._longitude=longitude; 
       this._image_name=image_name; 
       this._year_build=year_build; 
       this._address=address; 
       this._city=city; 
       this._email=email; 
       this._website=website; 
       this._telephone1=telephone1; 
       this._telephone2=telephone2; 
       this._Description=Description; 

     } 


       public int getID() { 
       return this._id; 
       } 


       public void setID(int id) { 
       this._id = id; 
       } 


       public String gettemplename() { 
       return this._temple_name; 
       } 


       public void settemplename(String temple_name) { 
       this._temple_name=temple_name; 
       } 

       public String gettempletype() { 
       return this._temple_type; 
       } 


       public void settempletype(String temple_type) { 
       this._temple_type=temple_type; 
       } 

       public String getlatitude() { 
       return this._latitude; 
       } 


       public void setlatitude(String latitude) { 
        this._latitude=latitude; 
       } 

       public String getlongitude() { 
       return this._longitude; 
       } 


       public void setlongitude(String longitude) { 
        this._longitude=longitude; 
       } 


       public String getimage_name() { 
       return this._image_name; 
       } 


       public void setimage_name(String image_name) { 
        this._image_name=image_name; 
       } 

       public String getyear_build() { 
       return this._year_build; 
       } 


       public void setyear_build(String year_build) { 
        this._year_build=year_build; 
       } 


       public String getaddress() { 
       return this._address; 
       } 


       public void setaddress(String address) { 
        this._address=address; 
       } 

       public String getcity() { 
       return this._city; 
       } 


       public void setcity(String city) { 
        this._city=city; 
       } 


       public String getemail() { 
       return this._email; 
       } 


       public void setemail(String email) { 
        this._email=email; 
       } 


       public String getwebsite() { 
       return this._website; 
       } 


       public void setwebsite(String website) { 
        this._website=website; 
       } 


       public String gettelephone1() { 
       return this._telephone1; 
       } 


       public void settelephone1(String telephone1) { 
        this._telephone1=telephone1; 
       } 

       public String gettelephone2() { 
       return this._telephone2; 
       } 


       public void settelephone2(String telephone2) { 
        this._telephone2=telephone2; 
       } 


       public String getDescription() { 
       return this._Description; 
       } 


       public void setDescription(String Description) { 
        this._Description=Description; 
       } 


    } 

Activitymain.xml файл

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 




     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <ListView 
       android:id="@+id/list" 
       android:layout_width="fill_parent" 
       android:layout_height="388dp" 
       android:focusable="false" 
       android:focusableInTouchMode="false" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/count" 
      android:layout_width="212dp" 
      android:layout_height="62dp" 
      android:text="TextView" /> 

    </LinearLayout> 

полная ошибка

02-01 16:05:14.265: D/jdwp(11214): sendBufferedRequest : len=0x41 
02-01 16:05:14.268: W/asset(11214): AssetManager-->addDefaultAssets CIP path not exsit! 
02-01 16:05:14.532: D/AbsListView(11214): checkAbsListViewlLogProperty get invalid command 
02-01 16:05:14.997: D/AndroidRuntime(11214): Shutting down VM 
02-01 16:05:14.997: W/dalvikvm(11214): threadid=1: thread exiting with uncaught exception (group=0x416969a8) 
02-01 16:05:15.014: E/AndroidRuntime(11214): FATAL EXCEPTION: main 
02-01 16:05:15.014: E/AndroidRuntime(11214): java.lang.RuntimeException: Unable to start activity ComponentInfo{lk.adspace.jaffnadb/lk.adspace.jaffnadb.MainActivity}: java.lang.NullPointerException 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread.access$600(ActivityThread.java:162) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.os.Handler.dispatchMessage(Handler.java:107) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.os.Looper.loop(Looper.java:194) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread.main(ActivityThread.java:5371) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at java.lang.reflect.Method.invokeNative(Native Method) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at java.lang.reflect.Method.invoke(Method.java:525) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at dalvik.system.NativeStart.main(Native Method) 
02-01 16:05:15.014: E/AndroidRuntime(11214): Caused by: java.lang.NullPointerException 
02-01 16:05:15.014: E/AndroidRuntime(11214): at lk.adspace.jaffnadb.MainActivity.View_all_temples(MainActivity.java:66) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at lk.adspace.jaffnadb.MainActivity.onCreate(MainActivity.java:55) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.Activity.performCreate(Activity.java:5122) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) 
02-01 16:05:15.014: E/AndroidRuntime(11214): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 

02-01 16: 05: 15,014: E/AndroidRuntime (11214): ... 11 более

+0

Сообщение f трассировка стека. – Naddy

+0

полностью опубликовать полное исключение logcat – Pearl

+0

Что такое строка 66 'MainActivity.java' – Raghunandan

ответ

0

Сделать глобальную переменную для вашего класса базы данных

Dbhandler dbhand; 

и инициализировать это на методе

dbhand = new Dbhandler(this); 

OnCreate() также найти идентификатор для ListView по методе OnCreate().

temple_listview = (ListView)findViewById(R.id.list); 

Не найдя идентификатор элемента ListView, вы установили в него адаптер. Таким образом, в этот момент вы обязательно получите исключение Null Pointer.

Вы должны изменить это ..

kovil insertData; 
    TextView textView; 

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

        textView = (TextView) findViewById(R.id.count); 


        insertData = new kovil("temple_name", "temple_type", "latitude", "longitude", "image_name", "year_build", "address", 
          "city", "email", "website", "telephone1", "telephone2", "Description"); 


         dbhand.open(): 
         dbhand .Add_Temple(insertData); 
         dbhand.close(): 


         kovil insertData2 = new kovil("temple_name", "temple_type", "latitude", "longitude", "image_name", "year_build", "address", 
           "city", "email", "website", "telephone1", "telephone2", "Description"); 
         dbhand.open(): 
         dbhand .Add_Temple(insertData2); 
         dbhand.close(): 

         int count = dbhand .Get_Total_Temple(); 


         textView.setText(Integer.toString(count)); 


         // i want to display all the values in a list over here. 

         View_all_temples(); 


       } 

EDIT:

Попробуйте изменить:

  public ArrayList<kovil> Get_Temple() { 
    try { 
     temple_list.clear(); 

     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_TEMPLE; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.getCount()>0)) { 
      cursor.moveToFirst(
     do { 
      kovil Kovil = new kovil(); 
      Kovil.setID(Integer.parseInt(cursor.getString(0))); 
      Kovil.settemplename(cursor.getString(1)); 
      Kovil.settempletype(cursor.getString(2)); 
      Kovil.setlatitude(cursor.getString(3)); 
      Kovil.setlongitude(cursor.getString(4)); 
      Kovil.setimage_name(cursor.getString(5)); 
      Kovil.setyear_build(cursor.getString(6)); 
      Kovil.setaddress(cursor.getString(7)); 
      Kovil.setcity(cursor.getString(8)); 
      Kovil.setemail(cursor.getString(9)); 
      Kovil.setwebsite(cursor.getString(10)); 
      Kovil.settelephone1(cursor.getString(11)); 
      Kovil.settelephone2(cursor.getString(12)); 
      Kovil.setDescription(cursor.getString(13)); 



      // Adding contact to list 
      temple_list.add(Kovil); 
     } while (cursor.moveToNext()); 
     } 

     // return contact list 
     cursor.close(); 
     db.close(); 

    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("all_temples", "" + e); 
    } 

    return temple_list; 
    } 
+0

no. Я добавил их. но по-прежнему получают ту же ошибку. Я обновил вопрос с полной ошибкой. –

+0

Хорошо. Скажите, на какой линии у вас возникла ошибка? – Piyush

+0

Проверьте обновленный ответ. – Piyush

2

я проверил код, просто добавьте temple_listview = (ListView) findViewById(R.id.list); в OnCreate вашего mainactivity (в), и он работает ко мне

+0

Я пробовал то же самое, но это дает мне ошибку. вы можете отправить мне рабочий файл zip на мою почту. здесь мой адрес электронной почты [email protected] –

+0

@ user3234352 Я отправил его на ваше письмо, проверьте его – Pearl

+0

. Я получил его Спасибо, очень .. –

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