0

これはアンドロイドのシンプルなアプリです。実行中に表示されますnullpointerexception。から値を取得できませんedittext。ここでは、から値を取得したいだけですedittext。しかし、それは示していますnullpointerexception..

これを解決するには?

public class Calci extends Activity  {
    Button add;
    String str1;
    String str2;
    EditText txt1;
    EditText txt2;
    TextView tv;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calci);

        add=(Button) findViewById(R.id.button1);
        txt1=(EditText) findViewById(R.id.editText1);
        str1=txt1.getText().toString();
        txt2=(EditText) findViewById(R.id.editText2);
        str2=txt2.getText().toString();
        tv=(TextView) findViewById(R.id.textView4);

        addition();

        add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                addition(); 
            }
        });
    }


    private void addition(){
        int res=0;
        res=Integer.parseInt(str1)+Integer.parseInt(str2);
        tv.setText(String.valueOf(res));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_calci, menu);
        return true;
    }
}
4

4 に答える 4

2

addition();から削除するだけ onCreate()です。初めてあなたと呼ばれたのEditTextsはいつ空っぽなのか疑問です。

また、メソッドを呼び出すときはaddition()、両方からテキストを取得する必要がありますEditTexts

そして、あなたの方法addition()は、

 private void addition()
 {

  int res=0;
  str1=txt1.getText().toString();
  str2=txt2.getText().toString();
  res=Integer.parseInt(str1)+Integer.parseInt(str2);
  tv.setText(String.valueOf(res));
 }
于 2012-11-26T06:14:33.107 に答える
2

xmlのデフォルト値を設定していることを確認するか editText1editText2ユーザーが入力した値にアクセスする場合は、コードを変更して、setOnClickListenerの前にaddition()を削除します。

      //  addition();  comment this line 
        add.setOnClickListener(new View.OnClickListener() 
        {

            public void onClick(View v) 
            {
                  str1=txt1.getText().toString();
                  str2=txt2.getText().toString();
                  addition(); 

            }
        });
于 2012-11-26T06:14:46.760 に答える
1

oncreate() の additiion() メソッドを置き換えて、以下のようにメソッドを変更するだけです

private void addition()
  {
         str1= str1==null?"0":str1;// do like this, so that if str1 returns null then it will be replaced by 0
         str2= str2==null?"0":str2;
         int res=0;
         res=Integer.parseInt(str1)+Integer.parseInt(str2);
         tv.setText(String.valueOf(res));
  }
于 2012-11-26T06:16:34.190 に答える
0

ここでは、addition() このメソッドを呼び出さないでください。

        str2=txt2.getText().toString();
        tv=(TextView) findViewById(R.id.textView4);

        //addition();


        add.setOnClickListener(new View.OnClickListener() 
于 2012-11-26T06:15:54.683 に答える