0

ユーザー入力に基づいて計算を行う次のプログラムがあります。しかし、calc参照されているボタンをクリックしてonClick()も何も起こりません。結果画面に移動しないためです。 iit が意図を変更しない理由がわかりません。

私のメインクラスは次のようなものです:

public class MainActivity extends Activity implements android.view.View.OnClickListener {

    //variables for xml objects
    EditText offsetLength,offsetDepth,ductDepth;
    Button calculate;

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

            //setting the variables to the xml id's and setting the click listener on the calc button
            offsetLength = (EditText)findViewById(R.id.offLength);
            offsetDepth = (EditText)findViewById(R.id.offDepth);
            ductDepth = (EditText)findViewById(R.id.ductDepth);
            calculate = (Button)findViewById(R.id.calc);
            calculate.setOnClickListener((OnClickListener) this);


        }

        //called when button is clicked.
        public void OnClick(View v)
        {
            try {

                String getoffsetlength = offsetLength.getText().toString(); 
                String getoffsetdepth = offsetDepth.getText().toString(); 
                String getductdepth = ductDepth.getText().toString(); 

                double tri1,tri2;
                double marking1,marking2;

                double off1 = Double.parseDouble(getoffsetlength);
                double off2 = Double.parseDouble(getoffsetdepth);
                double off3 = Double.parseDouble(getductdepth)
                        ;
                marking1 = Math.pow(off1,2) + Math.pow(off2,2);
                tri1 = (float)off2/(float)off1;
                tri2 = (float)off3/Math.atan((float)tri1);
                marking2 = (float)off3/Math.atan(tri2);


                Intent myIntent = new Intent(this, CalcResult.class);   
                myIntent.putExtra("number1", marking1);
                myIntent.putExtra("number2", marking2);

                startActivity(myIntent);

                Intent i = new Intent(this,CalcResult.class);


            } catch (NumberFormatException e) {
                // TODO: handle exception
                System.out.println("Must enter a numeric value!");
            }

        }

また、これはナビゲートする必要がある私の計算があるクラスです:

    public class CalcResult extends MainActivity
    {
        EditText result1,result2;

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.result);
            result1 = (EditText)findViewById(R.id.mark1);
            result2 = (EditText)findViewById(R.id.mark2);

            Intent intent = getIntent();
            Bundle bundle = intent.getExtras();
            double mark1 = bundle.getDouble("number1");
            double mark2 = bundle.getDouble("number2");  

        }

    }
4

2 に答える 2

0

あなたが持っている最初のエラーは、 Button に Listener を設定するときです。次を使用する必要があります。

calculate = (Button)findViewById(R.id.calc);
            calculate.setOnClickListener(this);//don't cast the listener to OnClickListener

それ以外の :

calculate = (Button)findViewById(R.id.calc);
            calculate.setOnClickListener((OnClickListener) this);

2 番目のエラーは、Overrided メソッドの署名が間違っていることです。次を使用します。

@Override
public void onClick(View v) {// notice the "o" in lower case
  //your code
}

それ以外の :

public void OnClick(View v) {
//your code
}

:アクティビティを切り替える方法については、このチュートリアルを確認してください

于 2013-09-25T17:11:03.693 に答える
0

交換

    Intent myIntent = new Intent(this, CalcResult.class);

  Intent myIntent = new Intent(MainActivity.this, CalcResult.class);
于 2013-09-25T16:50:49.663 に答える