2014-02-19 185 views
0

我的應用程序每次啓動時都會崩潰!它出什麼問題了?我創建了一個數據庫,我試圖從數據庫填充我的列表視圖我已經創建了什麼是代碼問題,它有什麼修復?啓動活動時出錯

02-19 22:02:07.502: D/AndroidRuntime(330): Shutting down VM 
02-19 22:02:07.502: W/dalvikvm(330): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
02-19 22:02:07.542: E/AndroidRuntime(330): FATAL EXCEPTION: main 
02-19 22:02:07.542: E/AndroidRuntime(330): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.database/com.example.database.MainActivity}: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-1.apk] 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.os.Looper.loop(Looper.java:123) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-19 22:02:07.542: E/AndroidRuntime(330): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 22:02:07.542: E/AndroidRuntime(330): at java.lang.reflect.Method.invoke(Method.java:507) 
02-19 22:02:07.542: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-19 22:02:07.542: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-19 22:02:07.542: E/AndroidRuntime(330): at dalvik.system.NativeStart.main(Native Method) 
02-19 22:02:07.542: E/AndroidRuntime(330): Caused by: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-1.apk] 
02-19 22:02:07.542: E/AndroidRuntime(330): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
02-19 22:02:07.542: E/AndroidRuntime(330): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
02-19 22:02:07.542: E/AndroidRuntime(330): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
02-19 22:02:07.542: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
02-19 22:02:07.542: E/AndroidRuntime(330): ... 11 more 
02-19 22:10:47.354: D/AndroidRuntime(364): Shutting down VM 
02-19 22:10:47.444: W/dalvikvm(364): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
02-19 22:10:47.482: E/AndroidRuntime(364): FATAL EXCEPTION: main 
02-19 22:10:47.482: E/AndroidRuntime(364): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.database/com.example.database.MainActivity}: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-2.apk] 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.os.Looper.loop(Looper.java:123) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-19 22:10:47.482: E/AndroidRuntime(364): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 22:10:47.482: E/AndroidRuntime(364): at java.lang.reflect.Method.invoke(Method.java:507) 
02-19 22:10:47.482: E/AndroidRuntime(364): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-19 22:10:47.482: E/AndroidRuntime(364): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-19 22:10:47.482: E/AndroidRuntime(364): at dalvik.system.NativeStart.main(Native Method) 
02-19 22:10:47.482: E/AndroidRuntime(364): Caused by: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-2.apk] 
02-19 22:10:47.482: E/AndroidRuntime(364): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
02-19 22:10:47.482: E/AndroidRuntime(364): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
02-19 22:10:47.482: E/AndroidRuntime(364): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
02-19 22:10:47.482: E/AndroidRuntime(364): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
02-19 22:10:47.482: E/AndroidRuntime(364): ... 11 more 
02-19 22:11:10.302: I/Process(364): Sending signal. PID: 364 SIG: 9 
02-19 22:11:17.712: D/AndroidRuntime(413): Shutting down VM 
02-19 22:11:17.712: W/dalvikvm(413): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
02-19 22:11:17.852: E/AndroidRuntime(413): FATAL EXCEPTION: main 
02-19 22:11:17.852: E/AndroidRuntime(413): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.database/com.example.database.MainActivity}: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-2.apk] 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.os.Looper.loop(Looper.java:123) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-19 22:11:17.852: E/AndroidRuntime(413): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 22:11:17.852: E/AndroidRuntime(413): at java.lang.reflect.Method.invoke(Method.java:507) 
02-19 22:11:17.852: E/AndroidRuntime(413): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-19 22:11:17.852: E/AndroidRuntime(413): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-19 22:11:17.852: E/AndroidRuntime(413): at dalvik.system.NativeStart.main(Native Method) 
02-19 22:11:17.852: E/AndroidRuntime(413): Caused by: java.lang.ClassNotFoundException: com.example.database.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.database-2.apk] 
02-19 22:11:17.852: E/AndroidRuntime(413): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
02-19 22:11:17.852: E/AndroidRuntime(413): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
02-19 22:11:17.852: E/AndroidRuntime(413): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
02-19 22:11:17.852: E/AndroidRuntime(413): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
02-19 22:11:17.852: E/AndroidRuntime(413): ... 11 more 
02-19 22:11:19.852: I/Process(413): Sending signal. PID: 413 SIG: 9 

活動:

package com.example.database; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 

    public class AndroidSQLite extends Activity { 

private DBHelper mySQLiteAdapter; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ListView listContent = (ListView)findViewById(R.id.contentlist); 

    /* 
    * Create/Open a SQLite database 
    * and fill with dummy content 
    * and close it 
    */ 
    mySQLiteAdapter = new DBHelper(this); 
    mySQLiteAdapter.openToWrite(); 
    mySQLiteAdapter.deleteAll(); 

    mySQLiteAdapter.insert("A for Apply"); 
    mySQLiteAdapter.insert("B for Boy"); 
    mySQLiteAdapter.insert("C for Cat"); 
    mySQLiteAdapter.insert("D for Dog"); 
    mySQLiteAdapter.insert("E for Egg"); 
    mySQLiteAdapter.insert("F for Fish"); 
    mySQLiteAdapter.insert("G for Girl"); 
    mySQLiteAdapter.insert("H for Hand"); 
    mySQLiteAdapter.insert("I for Ice-scream"); 
    mySQLiteAdapter.insert("J for Jet"); 
    mySQLiteAdapter.insert("K for Kite"); 
    mySQLiteAdapter.insert("L for Lamp"); 
    mySQLiteAdapter.insert("M for Man"); 
    mySQLiteAdapter.insert("N for Nose"); 
    mySQLiteAdapter.insert("O for Orange"); 
    mySQLiteAdapter.insert("P for Pen"); 
    mySQLiteAdapter.insert("Q for Queen"); 
    mySQLiteAdapter.insert("R for Rain"); 
    mySQLiteAdapter.insert("S for Sugar"); 
    mySQLiteAdapter.insert("T for Tree"); 
    mySQLiteAdapter.insert("U for Umbrella"); 
    mySQLiteAdapter.insert("V for Van"); 
    mySQLiteAdapter.insert("W for Water"); 
    mySQLiteAdapter.insert("X for X'mas"); 
    mySQLiteAdapter.insert("Y for Yellow"); 
    mySQLiteAdapter.insert("Z for Zoo"); 

    mySQLiteAdapter.close(); 

    /* 
    * Open the same SQLite database 
    * and read all it's content. 
    */ 
    mySQLiteAdapter = new DBHelper(this); 
    mySQLiteAdapter.openToRead(); 

    Cursor cursor = mySQLiteAdapter.queueAll(); 
    startManagingCursor(cursor); 

    String[] from = new String[]{DBHelper.KEY_CONTENT}; 
    int[] to = new int[]{R.id.text}; 

    SimpleCursorAdapter cursorAdapter = 
    new SimpleCursorAdapter(this, R.layout.row, cursor, from, to); 

    listContent.setAdapter(cursorAdapter); 

    mySQLiteAdapter.close(); 

}}

數據庫類

package com.example.database; 

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

     public class DBHelper { 

    public static final String MYDATABASE_NAME = "MY_DATABASE"; 
    public static final String MYDATABASE_TABLE = "MY_TABLE"; 
    public static final int MYDATABASE_VERSION = 1; 
    public static final String KEY_ID = "_id"; 
    public static final String KEY_CONTENT = "Content"; 

    //create table MY_DATABASE (ID integer primary key, Content text not null); 
    private static final String SCRIPT_CREATE_DATABASE = 
      "create table " + MYDATABASE_TABLE + " (" 
        + KEY_ID + " integer primary key autoincrement, " 
        + KEY_CONTENT + " text not null);"; 

    private SQLiteHelper sqLiteHelper; 
    private SQLiteDatabase sqLiteDatabase; 

    private Context context; 

    public DBHelper(Context c){ 
     context = c; 
    } 

    public DBHelper openToRead() throws android.database.SQLException { 
     sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION); 
     sqLiteDatabase = sqLiteHelper.getReadableDatabase(); 
     return this; 
    } 

    public DBHelper openToWrite() throws android.database.SQLException { 
     sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION); 
     sqLiteDatabase = sqLiteHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close(){ 
     sqLiteHelper.close(); 
    } 

    public long insert(String content){ 

     ContentValues contentValues = new ContentValues(); 
     contentValues.put(KEY_CONTENT, content); 
     return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues); 
    } 

    public int deleteAll(){ 
     return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null); 
    } 

    public Cursor queueAll(){ 
     String[] columns = new String[]{KEY_ID, KEY_CONTENT}; 
     Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
       null, null, null, null, null); 

     return cursor; 
    } 

    public class SQLiteHelper extends SQLiteOpenHelper { 

     public SQLiteHelper(Context context, String name, 
       CursorFactory factory, int version) { 
      super(context, name, factory, version); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 
      db.execSQL(SCRIPT_CREATE_DATABASE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 

     } 

    } 

} 
+3

您的活動名稱是「AndroidSQLite」,MainActivity在哪裏?如果您使用正確的活動名稱,您可以檢查AndroidManifest.xml嗎? – Prakash

+0

您不應對主線程將數據庫操作從onCreate移動到某些AsyncTask,否則有時您可能會收到ANR。 – Prakash

回答

0

你試着加載MainActivity

java.lang.ClassNotFoundException: com.example.database.MainActivity 

你的Manifest.xml裏面的變化MainActivityAndroidSQLite

而且您必須使用Asynctask進行數據庫操作,以避免ANR對話框。