2012-01-17 5 views
2

私の電卓プログラムはうまくいきません。数字のボタンをクリックするたびにクラッシュします。事前私の電卓プログラムがアンドロイドで動作するのに苦労しています... nullpointerexceptionを表示します

でhelp.Thanks logcat報告してください:

01-17 16:08:46.949: D/AndroidRuntime(321): Shutting down VM 
    01-17 16:08:46.949: W/dalvikvm(321): threadid=1: thread exiting with uncaught  exception (group=0x4001d800) 
    01-17 16:08:46.969: E/AndroidRuntime(321): FATAL EXCEPTION: main 
    01-17 16:08:46.969: E/AndroidRuntime(321): java.lang.NullPointerException 
    01-17 16:08:46.969: E/AndroidRuntime(321): at net.learn.calc.CalciActivity.handlenumber(CalciActivity.java:189) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at net.learn.calc.CalciActivity$9.onClick(CalciActivity.java:110) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.view.View.performClick(View.java:2408) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.view.View$PerformClick.run(View.java:8816) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.os.Handler.handleCallback(Handler.java:587) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.os.Handler.dispatchMessage(Handler.java:92) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.os.Looper.loop(Looper.java:123) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at android.app.ActivityThread.main(ActivityThread.java:4627) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at java.lang.reflect.Method.invokeNative(Native Method) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at java.lang.reflect.Method.invoke(Method.java:521) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    01-17 16:08:46.969: E/AndroidRuntime(321): at dalvik.system.NativeStart.main(Native Method) 

ここにプログラムがあります:

package net.learn.calc; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class CalciActivity extends Activity { 
/** Called when the activity is first created. */ 
EditText ent=null; 
Button a,b,c,d,e,f,g,h,i,j,add,sub,mul,div,equ,dot,cl,del; 
double num=0; 
int operator=1; 
boolean clearrdy=false; 
boolean numbpre=false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    a=(Button)findViewById(R.id.zero); 
    b=(Button)findViewById(R.id.one); 
    c=(Button)findViewById(R.id.two); 
    d=(Button)findViewById(R.id.three); 
    e=(Button)findViewById(R.id.four); 
    f=(Button)findViewById(R.id.five); 
    g=(Button)findViewById(R.id.six); 
    h=(Button)findViewById(R.id.seven); 
    i=(Button)findViewById(R.id.eight); 
    j=(Button)findViewById(R.id.nine); 
    add=(Button)findViewById(R.id.plus); 
    sub=(Button)findViewById(R.id.minus); 
    mul=(Button)findViewById(R.id.multiply); 
    div=(Button)findViewById(R.id.divide); 
    equ=(Button)findViewById(R.id.equal); 
    dot=(Button)findViewById(R.id.decimal); 
    cl=(Button)findViewById(R.id.clear); 
    del=(Button)findViewById(R.id.delete); 
    a.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(0); 
     } 
    }); 
    b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(1); 
     } 
    }); 
    c.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(2); 
     } 
    }); 
    d.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(3); 
     } 
    }); 
    e.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(4); 
     } 
    }); 
    f.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      handlenumber(5); 
     } 
    }); 
    g.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handlenumber(6); 
    } 
}); 
    h.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handlenumber(7); 
    } 
}); 
    i.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handlenumber(8); 
    } 
}); 
    j.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handlenumber(9); 
    } 
}); 
    add.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handleop(1); 
    } 
}); 
sub.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handleop(2); 
    } 
}); 
mul.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handleop(3); 
    } 
}); 
div.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handleop(4); 
    } 
}); 
equ.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handleop(0); 
    } 
}); 
dot.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     handledecimal(); 
    } 
}); 
cl.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     reset1(); 
    } 
}); 
del.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     backsp1(); 
    } 
}); 

} 
public void handlenumber(int n) 
{ 
    String str=ent.getText().toString(); 
    if(clearrdy) 
    { 
     str=""; 
     clearrdy=false; 
    } 
    String val=Integer.toString(n); 
    str=str+val; 
    ent.setText(str); 
    ent.setSelection(str.length()); 

    numbpre=true; 
} 
public void handledecimal() 
{ String str=ent.getText().toString(); 
    if(clearrdy) 
    { 
     str="0."; 

    } 
    else 
    { 
     str=str+"."; 

    } 
    ent.setText(str); 
    ent.setSelection(str.length()); 
    clearrdy=false; 
    numbpre=true; 
} 
public void handleop(int newop) 
{ 
    if(numbpre) 
    { 
     switch(operator) 
     { 
     case 1: 
     num=num + Double.parseDouble(ent.getText().toString()); 
     break; 
     case 2: 
     num=num - Double.parseDouble(ent.getText().toString()); 
     break; 
     case 3: 
     num=num * Double.parseDouble(ent.getText().toString()); 
     break; 
     case 4: 
     num=num/Double.parseDouble(ent.getText().toString()); 
     break; 
     } 
    } 
    String str=Double.toString(num); 
    ent.setText(str); 
    ent.setSelection(str.length()); 
    numbpre=false; 
    clearrdy=true; 
    operator=newop; 
} 
public void reset1() 
{ 
    numbpre=false; 
    clearrdy=false; 
    operator=1; 
    num=0; 
} 
public void backsp1() 
{ 
    String str=ent.getText().toString(); 
     if (str.length() > 0) { 
     str=str.substring(0,str.length() - 1); 
     ent.setText(str); 
     ent.setSelection(str.length()); 

} 
} 
} 


<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/entry" 
    android:layout_width="fill_parent" 
    android:layout_height="84dp" 
    android:layout_x="0dp" 
    android:layout_y="29dp" > 

    <requestFocus /> 
</EditText> 

     <Button 
      android:id="@+id/equal" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="250dp" 
      android:layout_y="407dp" 
      android:text="=" /> 

     <Button 
      android:id="@+id/divide" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="180dp" 
      android:layout_y="403dp" 
      android:text="/" /> 

     <Button 
      android:id="@+id/multiply" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="250dp" 
      android:layout_y="324dp" 
      android:text="X" /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="176dp" 
      android:layout_y="322dp" 
      android:text="9" /> 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="38dp" 
      android:layout_y="322dp" 
      android:text="7" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="107dp" 
      android:layout_y="322dp" 
      android:text="8" /> 

     <Button 
      android:id="@+id/zero" 
      android:layout_width="58dp" 
      android:layout_height="72dp" 
      android:layout_x="107dp" 
      android:layout_y="403dp" 
      android:text="0" /> 

      <Button 
       android:id="@+id/decimal" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="36dp" 
       android:layout_y="403dp" 
       android:text="." /> 

      <Button 
       android:id="@+id/five" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="105dp" 
       android:layout_y="247dp" 
       android:text="5" /> 

      <Button 
       android:id="@+id/four" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="36dp" 
       android:layout_y="243dp" 
       android:text="4" /> 

      <Button 
       android:id="@+id/six" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="174dp" 
       android:layout_y="247dp" 
       android:text="6" /> 

      <Button 
       android:id="@+id/minus" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="246dp" 
       android:layout_y="245dp" 
       android:text="-" /> 

      <Button 
       android:id="@+id/three" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="174dp" 
       android:layout_y="168dp" 
       android:text="3" /> 

      <Button 
       android:id="@+id/two" 
       android:layout_width="59dp" 
       android:layout_height="72dp" 
       android:layout_x="104dp" 
       android:layout_y="168dp" 
       android:text="2" /> 

      <Button 
       android:id="@+id/one" 
       android:layout_width="57dp" 
       android:layout_height="70dp" 
       android:layout_x="40dp" 
       android:layout_y="168dp" 
       android:text="1" /> 

      <Button 
       android:id="@+id/plus" 
       android:layout_width="58dp" 
       android:layout_height="72dp" 
       android:layout_x="244dp" 
       android:layout_y="170dp" 
       android:text="+" /> 

       <Button 
        android:id="@+id/delete" 
        android:layout_width="88dp" 
        android:layout_height="wrap_content" 
        android:layout_x="194dp" 
        android:layout_y="116dp" 
        android:text="DEL" /> 


       <Button 
        android:id="@+id/clear" 
        android:layout_width="84dp" 
        android:layout_height="wrap_content" 
        android:layout_x="66dp" 
        android:layout_y="118dp" 
        android:text="C" /> 

</AbsoluteLayout> 
+0

まずはsugあなたは配列を利用するためにuを作ります... urコードをコンパクトにしようとしてください... –

+0

あなたのボタンはメインレイアウトに存在しますか?いくつかの簡単なチェックを実行します。 'a' null、 'handlernumber'などと呼ばれますか?あなたのコードを大量に簡略化することができます、それは良いコードではありません。編集:それを見て、ほとんどは 'ent'としてのエラーはnullです。 – Ricky

答えて

1

私が見ることができるものから、あなたが任意のコントロールにentを割り当てない(すべてのあなた所持している電話番号がEditText ent=null;)ので、電話をかけたときにヌルエラーが発生します。

String str=ent.getText().toString(); 
+0

魚...私の悪い...ありがとう...私はその良いコードではないことを知っています...私はアンドロイドに1週間しか...まだそれのハングアップを取得しています。 – monosaur

+0

probs、幸運。 – Ricky