方法调用崩溃“无法执行活动的方法”

问题描述:

我试图从我的Android应用程序实现登录系统到存储在MS SQL Server 2008中的数据库。与服务器的连接工作,问题出现时我调用logIn方法让用户在连接助手类上进行连接来比较密码匹配。方法调用崩溃“无法执行活动的方法”

这是当点击登录按钮时执行的功能:在连接器类

public void onLogInButtonClicked(View v){ 
     final EditText login = (EditText) findViewById(R.id.login); 
     final EditText password = (EditText) findViewById(R.id.password); 

     String userName = login.getText().toString(); 
     String pass = password.getText().toString(); 
     System.out.println("Pass Entered:" + pass); 
     System.out.println("User Entered" + userName); 


     if (connector.logIn(userName, pass)){ 

      //Creates Intent from new Activity to be launched 
      Intent k = new Intent(this, MainActivity.class); 

      //Sends login name to activity k 
      k.putExtra("loginName", userName); 
      //Starts new Activity 
      startActivity(k); 


     } 
     else 
     { 
      //toast log in unsuccessful 
     } 
    } 

登录方法如下:

boolean logIn(String name, String password){ 
     System.out.println("I'm in LogIn method"); 
     java.sql.ResultSet result = null; 
     boolean log = false; 
     try { 
      connection = this.getConnection(); 
      if (connection != null) { 

        //String for the login query 
        String statement = "SELECT Password FROM Users WHERE UserName = '" 
            + name + "'";  
        System.out.println(statement); 

        Statement select = connection.createStatement(); 
        result = select.executeQuery(statement); 
        System.out.println(result.getString(1)); 
        if(result.getString(1) == password) log = true; 

        result.close(); 
        result = null; 
        closeConnection(); 
      } 
      else { 
        System.out.println("Error: No active Connection"); 
        return log; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      } 
     return log; 
    } 

我甚至不能看到“我在登录方法”在控制台,这让我猜测应用程序崩溃之前进入它,虽然崩溃发生在该方法被调用的行。

这里是日志:

04-25 23:32:45.855: E/AndroidRuntime(795): FATAL EXCEPTION: main 
04-25 23:32:45.855: E/AndroidRuntime(795): java.lang.IllegalStateException: Could not execute method of the activity 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$1.onClick(View.java:2144) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View.performClick(View.java:2485) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$PerformClick.run(View.java:9080) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Handler.handleCallback(Handler.java:587) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Looper.loop(Looper.java:123) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invoke(Method.java:507) 
04-25 23:32:45.855: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-25 23:32:45.855: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-25 23:32:45.855: E/AndroidRuntime(795): at dalvik.system.NativeStart.main(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): Caused by: java.lang.reflect.InvocationTargetException 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invoke(Method.java:507) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$1.onClick(View.java:2139) 
04-25 23:32:45.855: E/AndroidRuntime(795): ... 11 more 
04-25 23:32:45.855: E/AndroidRuntime(795): Caused by: java.lang.NullPointerException 

提前感谢!

+0

您可以在日志中发布堆栈跟踪的其余部分吗?最后一行表示一个NullPointerException,这可能是根本原因。 – elevine 2012-04-25 23:47:41

+0

之后才出现:04-25 23:32:45.855:E/AndroidRuntime(795):at com.gmat.app.AppActivity.onLogInButtonClicked(AppActivity.java:35)第35行代表connector.logIn ()方法被称为 – 2012-04-25 23:57:34

声音像连接器对象为空。你忘了初始化它或不正确的范围?如果连接器初始化不足以帮助您找到它,请将其发送到连接器的初始位置

+0

我简单地通过连接器连接器初始化它在张贴的方法之上; – 2012-04-25 23:59:08

+0

@Gmat'连接器连接器'是一个声明。 'connector = new Connector();'是一个初始化。或者你可以在同一行执行两个操作:'Connector connector = new Connector();' – JRaymond 2012-04-26 00:02:56

+0

非常感谢。我现在觉得很愚蠢,看起来我需要休息一下,再次感谢你。 – 2012-04-26 00:07:34