2011-12-26 52 views
0

我想從數據庫中檢索數據。它顯示爲display1.setOnClickListener(this);錯誤請任何人提出一個解決方案給我。在android sqlite中檢索數據造成麻煩

@Override 

protected void onCreate(Bundle savedInstanceState) { 

    // TODO Auto-generated method stub 

    super.onCreate(savedInstanceState); 

    display1=(Button)findViewById(R.id.button1); 

    inputid=(EditText)findViewById(R.id.display); 

    display1.setOnClickListener(this); 
} 

public void onClick(View v) { 

    // TODO Auto-generated method stub 

    int id=Integer.parseInt(inputid.getText().toString()); 

    DBAdapter dbadapter=new DBAdapter(this); 

    Cursor c=dbadapter.display(id); 

    Toast.makeText(this, "Name: " + c.getString(1) , Toast.LENGTH_LONG).show(); 

} 

logcat的是

12-26 16:27:26.438:d/AndroidRuntime(31283):關閉VM 12-26 16:27:26.438:W/dalvikvm(31283):線程ID = 1:線程退出未捕獲的異常(組= 0x40015560) 12-26 16:27:26.448:E/AndroidRuntime(31283):致命例外:主 12-26 16:27:26.448:E/AndroidRuntime(31283) :java.lang.RuntimeException:無法啓動活動ComponentInfo {com.android.database/com.android.database.Display}:java.lang.NullPointerException 12-26 16:27:26.448:E/AndroidRuntime(31283):在android.app.ActivityThread.performLaunchActi vity(ActivityThread.java:1647) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 12-26 16:27:26.448: E/AndroidRuntime(31283):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.os.Handler.dispatchMessage(Handler.java:99) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.os.Looper.loop(Looper.java:123) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.app.ActivityThread.main(ActivityThread.java :3683) 12-26 16:27:26.448:E/AndroidRuntime(31283):at java.lang.reflect.Method.invokeNative(Native Method) 12-26 16:27:26.448:E/AndroidRuntime(31283):at java.lang.reflect.Method.invoke(Method.java:507) 12-26 16:27:26.448:E/AndroidRuntime(31283) :at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 12-26 16:27:26.448:E/AndroidRuntime(31283):at com.android.internal.os.ZygoteInit。 main(ZygoteInit.java:597) 12-26 16:27:26.448:E/AndroidRuntime(31283):at dalvik.system.NativeStart.main(Native Method) 12-26 16:27:26.448:E/AndroidRuntime (31283):導致:java.lang.NullPointerException 12-26 16:27:26.448:E/AndroidRuntime(31283):在com.android.database.Display.onCreate(Display.java:23)*** *錯誤 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.app.Instrumentation.callActi vityOnCreate(Instrumentation.java:1047) 12-26 16:27:26.448:E/AndroidRuntime(31283):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 12-26 16:27:26.448: E/AndroidRuntime(31283):... 11更多 12-26 16:27:28.448:I /進程(31283):發送信號。 PID:31283 SIG:9

+1

粘貼錯誤日誌的完整代碼 – Pratik 2011-12-26 10:15:38

+0

是的Pratik是正確的,在'display'方法中有什麼,我們如何建議你一個解決方案,而不知道完整的代碼與日誌? – 2011-12-26 10:19:34

回答

0

您需要設置視圖上下文中將對DBAdapter而不是或要設置這個然後使用ActivityName.this這樣

DBAdapter dbadapter=new DBAdapter(ActivityName.this); 

DBAdapter dbadapter=new DBAdapter(v.getContext); 

相同的方式進入Toast.makeText()第一個參數

+0

我認爲他的代碼對此是可以的。您提到的問題經常發生在創建匿名偵聽器時,例如。一個控件的onClick監聽器。此外,我認爲編譯器會抱怨,如果這是問題,但他已經發布logcat輸出。 – barry 2011-12-26 21:06:08

1

您沒有設置內容視圖,以便display1將是無效的。您的onCreate需要如下所示:

setContentView(R.layout。主要);

在嘗試訪問視圖之前需要調用它。

希望這會有所幫助。

0

我已經得到了解決方案。我忘了爲我的活動放置佈局。