2011-12-26 54 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

我已经得到了解决方案。我忘了为我的活动放置布局。