2012-03-30 19 views
2

私はボタンのセットを持っていて、そのonClickプロパティはこのように「クリック」しますandroid:onClick="click"。私はアンドロイドでこれを実行しています。アクティビティのメソッドを実行できませんでした

ここでは、メインアクティビティのクリック機能について説明します。この関数は、期待どおりonCreateメソッドの外にあります。

public void click(View v) 
{ 
    String s = et2.getText().toString(); 

    switch(v.getId()) 
    { 
     case R.id.b0 :  
      if(s.length() == 1 && s.charAt(0) == '0') 
      { 
       et2.setText("0"); 
       et1.setText("0"); 
      } 
      else 
      { 
       s = s + "0"; 
       call(s); 
      } 
     break; 
     //Other cases 
    } 
} 

問題は、いずれかのボタンをクリックするたびに、アプリケーションが機能しなくなります(強制終了)。ここで

ログです:

3月30日22:23:20.129:E/AndroidRuntime(1240):致命的な例外:メイン 3月30日22:23:20.129:E/AndroidRuntime(1240) : java.lang.IllegalStateException: のメソッドを実行できませんでした03-30 22:23:20.129:E/AndroidRuntime(1240): android.view.View $ 1.onClick(View.java:3044)03 -30 22:23:20.129: E/AndroidRuntime(1240): android.view.View.performClick(View.java:3511)03-30 22:23:20.129: E/AndroidRuntime(1240):at android.vie w.View $ PerformClick.run(View.java:14105)03-30 22:23:20.129:E/AndroidRuntime(1240): android.os.Handler.handleCallback(Handler.java:605)03-30 22:23:20.129:E/AndroidRuntime(1240):23:20.129:E/AndroidRuntime(1240):
でandroid.os.Handler.dispatchMessage(Handler.java:92)03から30 22でandroid.os.Looper.loop(Looper.java:137)03-30 22:23:20.129: E/AndroidRuntime(1240): android.app.ActivityThread.main(ActivityThread.java:4424)03-30 22:23:20.129:E/AndroidRuntime(1240): の場合java.lang.reflect.Method.invokeNative(ネイティブメソッド)03-30 22:23:20.129:E/AndroidRuntime(1240): java .lang.reflect.Method.invoke(Method.java:511)03-30 22:23:20.129: E/AndroidRuntime(1240): でcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。 java:784) 03-30 22:23:20.129:E/AndroidRuntime(1240): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)03-30 22:23:20.129 :E/AndroidRuntime(1240): dalvik.system.NativeStart.main(ネイティブメソッド)03-30 22:23:20.129: E/AndroidRuntime(1240):原因: java.lang.reflect.InvocationTargetException 03 -30 22:23:20.129: E/AndroidRuntime(1240): の場合java.lang.reflect.Method.invokeNative(ネイティブメソッド)03-30 22:23:20.129:E/AndroidRuntime(1240): java.lang.reflect.Method.invoke(Method.java:511)03-30 22:23:20.129: E/AndroidRuntime(1240): android.view.View $ 1.onClick(View.java:3039 )03-30 22:23:20.129: E/AndroidRuntime(1240):... 11もっと見る03-30 22:23:20.129: E/AndroidRuntime(1240):原因:java.lang.NullPointerException 03 -30 22:23:20.129:E/AndroidRuntime(1240): yadav.sanjay.calculator.CalculatorActivity.click(CalculatorActivity.java:63)で

+0

'click()'は 'onClick()'でなければなりません。 –

+2

CalculatorActivity.javaの63行目は何ですか? –

+0

行63: 'String s = et2.getText()。toString();' – Exorcist

答えて

8

に起因:java.lang.NullPointerExceptionが通常、 これは、スタッフがまだ初期化されていないことを意味します。 行63のコードを確認してください。

0

et2がインサイト化されているかどうかを確認してください。findViewById()を使用している場合は、setContent()の後でそれを行うかどうか確認してください。

0

このように、63行目のコードを2つの別々の行に変更してみてください。

String s; //you should probably change s to something less common like calS or the like 
s = et2.getText().toString(); 

もう一つの問題は、et2が決して初期化されなかったことです。 et2を初期化したことを確認してください。

関連する問題