【问题标题】:Read data from a database in an android app从 android 应用程序中的数据库中读取数据
【发布时间】:2012-09-19 19:24:39
【问题描述】:

这是我从数据库中读取数据的代码。在这里,我只是接收值并使用“Toast”类打印它们。

public void OnClickLogin(View btnLogin)
{
    String email,password;
    String[] cols = new String[] {DataBase_Server.EMAIL, DataBase_Server.PASS};
    EditText edtPassword = (EditText) findViewById(R.id.edtPassword);
    EditText edtLoginId = (EditText) findViewById(R.id.btnLogin);
    DataBase_Server database=new DataBase_Server(login.this);
    SQLiteDatabase db=database.getReadableDatabase();
    Cursor c=db.query(DataBase_Server.TABLE, null, null, null, null, null, null);
    //startManagingCursor(c);
    c.moveToFirst();
    email=c.getString(c.getColumnIndex(DataBase_Server.EMAIL));
    password=c.getString(c.getColumnIndex(DataBase_Server.PASS));
    Toast.makeText(this,email+" hello "+password, Toast.LENGTH_SHORT).show();
}

代码中没有语法错误,但是当我运行我的应用程序并单击我的登录按钮时,我得到一个强制关闭对话框,该对话框最终退出了我的应用程序,并且在“logcat”中我看到了一些异常,例如“无法打开堆栈文件......访问被拒绝”等等等等。

日志猫:

09-20 00:44:06.755:E/AndroidRuntime(244):未捕获的处理程序:线程主因未捕获的异常而退出 09-20 00:44:06.775: E/AndroidRuntime(244): java.lang.IllegalStateException: 在活动中找不到方法 onClickLogin(View) 09-20 00:44:06.805:E/dalvikvm(244):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝

日志猫

还有一些错误: 日志猫:

09-20 00:44:06.755:E/AndroidRuntime(244):未捕获的处理程序:线程主因未捕获的异常而退出 09-20 00:44:06.775: E/AndroidRuntime(244): java.lang.IllegalStateException: 在活动中找不到方法 onClickLogin(View) 09-20 00:44:06.805:E/dalvikvm(244):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝 09-20 01:22:04.535:E/AndroidRuntime(352):未捕获的处理程序:线程主因未捕获的异常而退出 09-20 01:22:04.555: E/AndroidRuntime(352): java.lang.IllegalStateException: 无法执行活动的方法 09-20 01:22:04.555: E/AndroidRuntime(352): 在 android.view.View$1.onClick(View.java:2031) 09-20 01:22:04.585:E/dalvikvm(352):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝

【问题讨论】:

  • 如果您从 logcat 附加错误会有所帮助
  • "Database_Server" 是我创建表的数据库类的名称
  • 在函数名称上固定大小写后,请确保在退出函数之前关闭游标和数据库。 c.close(); db.close();

标签: android database sqlite android-intent


【解决方案1】:

你的方法被调用

OnClickLogin

但在您的 XML 布局文件中,您已将其声明为:

android:onClick="onClickLogin"

大写 O 错误。只需在你的类中重命名你的方法:

public void onClickLogin(View btnLogin)

【讨论】:

  • @rick 是的,但这是这个问题的答案。继续发展,如果您遇到困难,请打开一个新问题。这个可以标记为已回答i.stack.imgur.com/uqJeW.png
  • logcat : 09-20 01:28:55.524: E/AndroidRuntime(378): java.lang.IllegalStateException: 无法执行活动的方法
【解决方案2】:

检查拼写,我假设您在 xml 中指定了单击处理程序,我个人认为这很容易出错。错误是该方法拼写为OnClickLogin,而您在xml 中指定了onClickLogin(注意小写'o')。我个人更喜欢不在 XML 中指定 clickhandler,而是通过代码指定它,例如

Button btn = (Button) findViewById(R.id.mybutton);
btn.setOnClickHandler(...).

【讨论】:

  • 我不介意使用 XML onClick 属性,但我使用 Annotations 让自己意识到此方法是我的应用程序的入口点:blog.blundell-apps.com/…
猜你喜欢
  • 2013-04-24
  • 2015-06-27
  • 2015-08-15
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多