-2

androidで足し算タイプの電卓を作ってみました。そのために、次のコードを使用しました。

しかし、 ans は常に 0..

public class Main extends Activity {

    EditText num1,num2;
    TextView resu;
    int res;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button add=(Button) findViewById(R.id.add);
        num1=(EditText) findViewById(R.id.etnum1);
        num2=(EditText) findViewById(R.id.etnum2);
        resu=(TextView) findViewById(R.id.textView4);

        String mynum1=num1.getText().toString();
        final int mnum1=Integer.parseInt(mynum1);

        String mynum2=num2.getText().toString();
        final int mnum2=Integer.parseInt(mynum2);

        add.setOnClickListener(new OnClickListener() {

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

                res=mnum1+mnum2;
                resu.setText(Integer.toString(res));
            }
        });
    }
}

私も試してみました

resu.setText(String.valueOf(res));

しかし、答えは常にゼロです。

私は何を間違えましたか?

4

7 に答える 7

4

以下に示すように、クリック リスナー内に数値を取得するためのステートメントを含めます。

public class Main extends Activity {

EditText num1,num2;
TextView resu;
int res;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button add=(Button) findViewById(R.id.add);
    num1=(EditText) findViewById(R.id.etnum1);
    num2=(EditText) findViewById(R.id.etnum2);
    resu=(TextView) findViewById(R.id.textView4);






    add.setOnClickListener(new OnClickListener() {

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

            String mynum1=num1.getText().toString();
            String mynum2=num2.getText().toString();

            res=Integer.parseInt(mynum1)+Integer.parseInt(mynum2);
            resu.setText(Integer.toString(res));
        }
    });
}

}

于 2012-12-12T09:08:54.647 に答える
0

アクティビティが作成されたときにユーザー入力を取得しました( onCreate)。

ボタンがクリックされたときにユーザー入力を追加するだけでなく、ボタンがクリックされたときにユーザー入力を取り込む必要があります。コードを次のように変更します。

public class Main extends Activity {

    EditText num1,num2;
    TextView resu;
    int res;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button add=(Button) findViewById(R.id.add);
        num1=(EditText) findViewById(R.id.etnum1);
        num2=(EditText) findViewById(R.id.etnum2);
        resu=(TextView) findViewById(R.id.textView4); 

        add.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                String mynum1=num1.getText().toString();
                int mnum1=Integer.parseInt(mynum1);

                String mynum2=num2.getText().toString();
                int mnum2=Integer.parseInt(mynum2);

                res=mnum1+mnum2;
                resu.setText(Integer.toString(res));
            }
        });
    }
}

ただし、ユーザーが空白のテキストでボタンを押すと、このアプリがクラッシュするため、 try - catchを使用する必要があります。

于 2013-12-08T04:39:20.710 に答える
0

ボタンの setOnClickListener コードを変更し、次のように Integer に解析する前に edittext の値が NULL または空であることを確認します。

 add.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
           int mnum1,mnum2;
         if(isNotNullNotEmptyNotWhiteSpaceOnlyByJava(num1.getText().toString())){

              mnum1=Integer.parseInt(num1.getText().toString());
         } 
         else{
                  mnum1=0;
          }  
         if(isNotNullNotEmptyNotWhiteSpaceOnlyByJava(num2.getText().toString())){

          mnum2=Integer.parseInt(num2.getText().toString());
         } 
         else{
               mnum2=0;
          }  

            res=mnum1+mnum2;
            resu.setText(Integer.toString(res));
        }
public  boolean isNotNullNotEmptyNotWhiteSpaceOnlyByJava(  
    String string)  
{  
   return string != null && !string.isEmpty() && !string.trim().isEmpty();  
} 

現在、EditText のボタン クリックでユーザーが入力した最新の値を取得していません。

于 2012-12-12T08:47:26.053 に答える
-3

完全な開示:私の個人的なブログから

androidの追加プログラム

Androidで2つの数値を加算するためのXMLおよびJavaコード

メインアクティビティ.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText editText,editText2,editText4;
    int v1,v2,v3;
    String s="ans";
private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button=(Button)findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    @Override
    public void onClick(View v)
    {
        editText=(EditText)findViewById(R.id.editText);
        editText2=(EditText)findViewById(R.id.editText2);
        editText4=(EditText)findViewById(R.id.editText4);
         v1=Integer.parseInt(editText.getText().toString());
         v2=Integer.parseInt(editText2.getText().toString());
         v3=v1+v2;

         s=String.valueOf(v3);
        editText4.setText(s);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    } 

activitymain.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <EditText
        android:layout_width="500dp"
        android:layout_height="40dp"
        android:id="@+id/editText2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="60dp" />

    <EditText
        android:layout_width="500dp"
        android:layout_height="40dp"
        android:id="@+id/editText"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/editText2" />
    <EditText
        android:layout_width="800dp"
        android:layout_height="40dp"
        android:id="@+id/editText4"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_below="@+id/editText" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK"
        android:id="@+id/button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />


</RelativeLayout>
于 2016-02-20T02:57:00.797 に答える