2012-04-06 106 views
1

我想从我的方法中获取值并将其显示在另一个类中作为敬酒(只是为了确保我的方法正常)。我得到一个空指针异常,我似乎无法弄清楚,我已经尝试了多种不同的事情。我甚至尝试给我的“这个”和“那个”的字符串值。然后我的日志猫告诉我尝试访问类时出现空指针异常

04-05 21:17:29.633:E/AndroidRuntime(18838):java.lang.RuntimeException:无法启动活动ComponentInfo {com.cerealBarApps/com.cerealBarApps.Testing}:android .content.res.Resources $ NotFoundException:字符串资源ID#0x0

这是我想用来运行一切的类。

public class Testing extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String Testeroni = "This"; 
     String Testerhynocerous = "That"; 

     LoginTest test = new LoginTest(); 

     Toast.makeText(getApplicationContext(), (test.TestUsername(Testeroni)), 
       Toast.LENGTH_SHORT).show(); 

     Toast.makeText(getApplicationContext(), 
       (test.TestPassword(Testerhynocerous)), Toast.LENGTH_SHORT) 
       .show(); 

    } 
} 

这是我打电话来运行方法的类。

public class LoginTest { 

    // 0 = Username length is less than 4 or greater than 15 
    // 1 = Username character is not a letter/or digit 
    // 9 = Everything is okay in username :) 
    public int TestUsername(String username) { 
     if (username.length() <= 4 || username.length() >= 15) { 

      return 0; 
     } 

     for (int i = 0; i < username.length(); i++) { 
      if (Character.isDigit(username.charAt(i)) 
        || Character.isJavaLetter(username.charAt(i))) { 
       System.out.println(""); 
       // Do Nothing 
      } else 

       return 1; 
     } 
     return 9; 
    } 



     // 2 = Passowrd length is less than 4 or greater than 15 
     // 3 = Password character is not a digit 
     // 8 = Everything is okay in password :) 
     public int TestPassword(String password) { 
      if (password.length() <= 4 || password.length() >= 15) { 
       return 2; 
      } 

      for (int i = 0; i < password.length(); i++) { 
       if (Character.isDigit(password.charAt(i)) 
         || Character.isJavaLetter(password.charAt(i))) { 
        System.out.println(""); 
        // Do Nothing 
       } else 
        return 3; 
      } 
      return 8; 
     } 
    } 
+0

Android使用int数据类型作为资源ID,因此您应该将变量 int值为字符串值 – 2012-04-06 01:33:16

回答

1

这些代码:

Toast.makeText(getApplicationContext(), (test.TestUsername(Testeroni)), 
      Toast.LENGTH_SHORT).show(); 

    Toast.makeText(getApplicationContext(), 
      (test.TestPassword(Testerhynocerous)), Toast.LENGTH_SHORT) 
      .show(); 

有一些问题,test.TestUsername(Testeroni)test.TestPassword(Testerhynocerous)返回类型为int,所以它认为这样的字符串资源ID,因此如果能更改为:

Toast.makeText(getApplicationContext(), (""+test.TestUsername(Testeroni)), 
      Toast.LENGTH_SHORT).show(); 

    Toast.makeText(getApplicationContext(), 
      (""+test.TestPassword(Testerhynocerous)), Toast.LENGTH_SHORT) 
      .show(); 
+0

我觉得自己很笨...谢谢 – 2012-04-06 01:31:54

1

的问题是在这里:

Toast.makeText(getApplicationContext(), (test.TestUsername(Testeroni)), 
      Toast.LENGTH_SHORT).show(); 

的TestUsername返回一个int,它被解释为资源ID这当然是无效的。

将其更改为:

Toast.makeText(getApplicationContext(), String.valueOf((test.TestUsername(Testeroni))), 
      Toast.LENGTH_SHORT).show();