0

这是 myDB 类 //请看一下 public Cursor getplaces() --- 我是对还是错?如果我想 setListAdapter,如何在主 Activity 类中编码。感谢您的帮助。

公共类 MyDB {
    受保护的静态最终字符串 TAG = "TAG";

    私有最终上下文 mContext;
    私有 SQLiteDatabase mDb;
    私人 MyDBhelper mDbHelper;
公共MyDB(上下文上下文){   
    this.mContext = 上下文;
    mDbHelper = new MyDBhelper(mContext);
}

公共 MyDB createDatabase() 抛出 SQLException
{
    尝试
    {
        mDbHelper.createDataBase();
    }
    捕捉(IOException mIOException)
    {
        Log.e(TAG, mIOException.toString() + "UnableToCreateDatabase");
        抛出新错误(“UnableToCreateDatabase”);
    }
    返回这个;
}

公共 MyDB open() 抛出 SQLException
{
    尝试
    {
        mDbHelper.openDataBase();
        mDbHelper.close();
        mDb = mDbHelper.getReadableDatabase();
    }
    捕获(SQLException mSQLException)
    {
        Log.e(TAG, mSQLException.toString());
        抛出 mSQLException;
    }
    返回这个;
}


    公共游标 getplaces()
    {
        光标 c = mDb.query(Constants.DATABASE_NAME, null, null, null, null, null, null);
        返回 c;

    }

    公共无效关闭()
    {
        mDbHelper.close();
    }

}

ListplaceActivity 类

公共 ListplaceActivity 扩展 ListActivity {



    私有静态 MyDB mDbHelper;
    String[] from = new String[] { 常量.TITLE_NAME };
    int[] to = new int[] {R.id.place_title};


    @覆盖
    公共无效 onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        mDbHelper = new MyDB(this);
        光标 c = mDbHelper.getplaces();
        setListAdapter(新的 SimpleCursorAdapter(这个,
                  R.layout.list_place, c,
                  从到));

        最终列表视图 lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView parent, View view,int position, long id) {

                意图 newActivity = new Intent(view.getContext(), Place.class);     
                开始活动(新活动);

            }
          });
    }

}

在我单击转到 ListplacesActivity 页面后,在 LogCat 中显示如下,它发生“意外停止”并且没有显示任何列表:

05-30 21:49:21.543:信息/进程(17605):发送信号。PID:17605 SIG:9
05-30 21:49:21.583: INFO/ActivityManager(59): 进程 com.ctg (pid 17605) 已经死亡。
05-30 21:49:21.593: INFO/WindowManager(59): WIN DEATH: Window{44de90a0 com.ctg/com.ctg.CTG paused=false}
05-30 21:49:21.674:INFO/ActivityManager(59):为活动 com.ctg/.CTG 启动 proc com.ctg:pid=27207 uid=10028 gids={}
05-30 21:49:21.733: 错误/gralloc(59): [注销] 句柄 0x5fe9d8 仍被锁定(状态 = 40000001)
05-30 21:49:22.103: DEBUG/ddm-heap(27207): 得到功能列表请求
05-30 21:49:22.265:INFO/UsageStats(59):com.ctg 意外恢复,而 com.ctg 已经恢复
05-30 21:49:23.084:调试/dalvikvm(27207):GC 在 216 毫秒内释放了 801 个对象/58520 个字节
05-30 21:49:23.433:调试/dalvikvm(27207):GC 在 129 毫秒内释放了 93 个对象/3632 个字节
05-30 21:49:23.623: WARN/PhoneWindow(27207): 以前聚焦的视图在保存过程中报告了 id 16908298,但在恢复过程中找不到。
05-30 21:49:23.843: WARN/InputManagerService(59): 收到 RemoteException 向 pid 17605 uid 10028 发送 setActive(false) 通知
05-30 21:49:24.103:INFO/ActivityManager(59):显示的活动 com.ctg/.CTG:2489 毫秒(总共 33589 毫秒)
05-30 21:49:29.013: INFO/ActivityManager(59): 开始活动: Intent { cmp=com.ctg/.AttractionsListActivity }
05-30 21:49:29.085:调试/AndroidRuntime(27207):关闭 VM
05-30 21:49:29.085: WARN/dalvikvm(27207): threadid=3: 线程以未捕获的异常退出 (group=0x4001b188)
05-30 21:49:29.094:错误/AndroidRuntime(27207):未捕获的处理程序:线程主因未捕获的异常而退出
05-30 21:49:29.114: 错误/AndroidRuntime(27207): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.ctg/com.ctg.AttractionsListActivity}: java.lang.NullPointerException
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread.access$2200(ActivityThread.java:119)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.os.Handler.dispatchMessage(Handler.java:99)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.os.Looper.loop(Looper.java:123)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread.main(ActivityThread.java:4363)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 java.lang.reflect.Method.invokeNative(Native Method)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 java.lang.reflect.Method.invoke(Method.java:521)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-30 21:49:29.114:错误/AndroidRuntime(27207):在 dalvik.system.NativeStart.main(本机方法)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 由: java.lang.NullPointerException 引起
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 com.ctg.data.MyDB.getplaces(MyDB.java:82)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 com.ctg.AttractionsListActivity.onCreate(AttractionsListActivity.java:32)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
05-30 21:49:29.114: 错误/AndroidRuntime(27207): ... 11 更多
05-30 21:49:29.144:INFO/Process(59):发送信号。PID:27207 SIG:3
05-30 21:49:29.144: INFO/dalvikvm(27207): threadid=7: 对信号 3 做出反应
05-30 21:49:29.174: INFO/dalvikvm(27207): 将堆栈跟踪写入“/data/anr/traces.txt”
05-30 21:49:39.039:WARN/ActivityManager(59):启动超时已过期,放弃唤醒锁!
05-30 21:49:39.057: WARN/ActivityManager(59): HistoryRecord{44eae320 com.ctg/.AttractionsListActivity} 的活动空闲超时
4

1 回答 1

3

你没有打电话MDbHelper.open(),所以mDb里面的变量getPlaces()是空的。

于 2011-05-30T14:56:22.590 回答