我有創造的Jave 一個單獨的類我有這部分代碼存在問題轉換代碼PICE到
private class Read_from_db extends AsyncTask <String, Long, Void> {
private final ProgressDialog dialog = new ProgressDialog(Read.this);
// can use UI thread here
protected void onPreExecute() {
this.dialog.setMessage("Wait\nSome SLOW job is being done...");
this.dialog.show();
}
@Override
protected Void doInBackground(String... arg0) {
// TODO Auto-generated method stub
try {
//txtMsg.append("\n");
// obtain a list of from DB
String TABLE_NAME = "classicpoems__poet_header";
String COLUMN_ID = "_id";
// String _ID = "_id";
String COLUMN_NAME = "poet_name";
String COLUMN_CENTURY = "century_start";
String [] columns ={COLUMN_ID,COLUMN_NAME,COLUMN_CENTURY};
Cursor c = db.query(TABLE_NAME,columns,null, null, null, null, COLUMN_ID);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(Read.this, R.layout.list_item, c,
new String[] {COLUMN_ID,COLUMN_NAME,COLUMN_CENTURY}, new int[] {R.id.list_item_text_id,R.id.list_item_text_main,R.id.list_item_text_sub}, 0);
ListView list = (ListView) findViewById(R.id.list_poet_name);
list.setAdapter(adapter);
} catch (Exception e) {
//Toast.makeText(Read.this, e.getMessage(), 1).show();
Log.i(TAG, e.getMessage());
}
db.close();
return null;
}
// can use UI thread here
protected void onPostExecute(final Void unused) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
// cleaning-up, all done
this.dialog.setMessage("Done");
}
}
那一定每次都重複的活動負載(但也有一些變化,例如TABLE_NAME
和R.id.list_poet_name
columns
和..) 我認爲重複此代碼是不是一個專業的方式,所以我想將其轉換爲一個單獨的類,並在每個活動中使用它 但我不知道該怎麼做..(我試過,但我總是得到錯誤,例如我不知道如何定義上下文SimpleCursorAdapter
或使T這裏oast工作,你可以幫我如何將此代碼轉換爲一個單獨的類
這裏是我的類代碼
,當我想用它,我用這個代碼
enter code here Get_data poet_name=new Get_data();
poet_name.TABLE_NAME="classicpoems__poet_header";
poet_name.COLUMN_ID = "_id";
poet_name.COLUMN_NAME = "poet_name";
poet_name.COLUMN_CENTURY = "century_start";
poet_name.columns =new String[]{"_id","poet_name","century_start"};
poet_name.adapter_list=R.layout.list_item;
poet_name.target=R.id.list_poet_name;
poet_name.execute();
但是我得到錯誤..你能幫我找到我的錯誤嗎?
我改變了最初的代碼Get_data poet_name=new Get_data(this);
但我還沒有在這裏得到錯誤的logcat中的一部分
01-06 04:25:32.262: E/AndroidRuntime(3244): FATAL EXCEPTION: main
01-06 04:25:32.262: E/AndroidRuntime(3244): java.lang.RuntimeException: Unable to start activity ComponentInfo{co.tosca.persianpoem/co.tosca.persianpoem.Read}: java.lang.NullPointerException
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread.access$600(ActivityThread.java:127)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.os.Looper.loop(Looper.java:137)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread.main(ActivityThread.java:4441)
01-06 04:25:32.262: E/AndroidRuntime(3244): at java.lang.reflect.Method.invokeNative(Native Method)
01-06 04:25:32.262: E/AndroidRuntime(3244): at java.lang.reflect.Method.invoke(Method.java:511)
01-06 04:25:32.262: E/AndroidRuntime(3244): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-06 04:25:32.262: E/AndroidRuntime(3244): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-06 04:25:32.262: E/AndroidRuntime(3244): at dalvik.system.NativeStart.main(Native Method)
01-06 04:25:32.262: E/AndroidRuntime(3244): Caused by: java.lang.NullPointerException
01-06 04:25:32.262: E/AndroidRuntime(3244): at co.tosca.persianpoem.Get_data.onPreExecute(Get_data.java:54)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.os.AsyncTask.execute(AsyncTask.java:511)
01-06 04:25:32.262: E/AndroidRuntime(3244): at co.tosca.persianpoem.Read.onCreate(Read.java:65)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.Activity.performCreate(Activity.java:4465)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-06 04:25:32.262: E/AndroidRuntime(3244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
01-06 04:25:32.262: E/AndroidRuntime(3244): ... 11 more
您正在呼籲GET_DATA錯誤的初始化。使用此代碼(假設您正在從您的活動調用: Get_data poet_name = new Get_data(this); – HalR
感謝我的朋友,但我仍然得到錯誤..我附上logcat代碼..我認爲我的課有問題..我是對的? – Majid
看起來您在初始化活動時遇到問題,您需要調試您的初始化。除此之外,此代碼從不執行:public Get_data(){ TABLE_NAME =「classicpoems__poet_header」; COLUMN_ID =「_ id」; COLUMN_NAME =「poet_name」; } 因爲您不是調用該方法,而是在啓動應用程序時調用該方法。 – HalR