2016-07-04 23 views
0

我正在做一個簡單的計算器,但因爲它是選擇一個操作符的方式,因此每當我按下「計算」它永遠不會計算它,但是當我更改在微調器上選擇的項目時,它會用它們各自的操作符計算x和y 。如何在onClickListener中正確使用/代碼onItemSelectedListener?如何在onClickListener中使用onItemSelectedListener?

這是我的代碼。

package com.example.leks.myapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 

    private TextView tvResult; 
    private EditText etFirstnumber, etSecondnumber; 
    private Button btnCalculate; 
    private Spinner spnOperators; 
    private int result; 

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


    } 

    private void init() 
    { 
     etFirstnumber = (EditText) findViewById(R.id.etFirstnumber); 
     etSecondnumber = (EditText) findViewById(R.id.etSecondnumber); 

     spnOperators = (Spinner) findViewById(R.id.spnOperators); 

     tvResult = (TextView) findViewById(R.id.tvResult); 

     btnCalculate = (Button) findViewById(R.id.btnCalculate); 

     btnCalculate.setOnClickListener(this); 
    } 


    @Override 
    public void onClick(View view) 
    { 


     try { 
      switch (view.getId()) { 
       case R.id.btnCalculate: 
        spnOperators.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
        { 
         @Override 

         public void onItemSelected(AdapterView<?> parent, View view, int position, long l) 
         { 
          String num1 = etFirstnumber.getText().toString(); 
          String num2 = etSecondnumber.getText().toString(); 
          int x = Integer.parseInt(num1); 
          int y = Integer.parseInt(num2); 

          String SelectedItem = parent.getItemAtPosition(position).toString(); 
          if (SelectedItem.equals("+")) 
          { 
           result = x + y; 
           tvResult.setText(String.valueOf(result)); 
          } 
          if (SelectedItem.equals("-")) 
          { 
           result = x - y; 
           tvResult.setText(String.valueOf(result)); 
          } 
          if (SelectedItem.equals("*")) 
          { 
           result = x * y; 
           tvResult.setText(String.valueOf(result)); 
          } 
          if (SelectedItem.equals("/")) 
          { 
           result = x/y; 
           tvResult.setText(String.valueOf(result)); 
          } 

         } 

         @Override 
         public void onNothingSelected(AdapterView<?> adapterView) 
         { 

         } 
        }); 
        break; 
      } 
     }catch(Exception e) 
     { 
      tvResult.setText("Error"); 
     } 
    } 
} 

回答

0

請將您的onItemSelectedListener放在init方法中。

你不需要把它onClick方法。

private void init() 
{ 
    etFirstnumber = (EditText) findViewById(R.id.etFirstnumber); 
    etSecondnumber = (EditText) findViewById(R.id.etSecondnumber); 

    spnOperators = (Spinner) findViewById(R.id.spnOperators); 

    tvResult = (TextView) findViewById(R.id.tvResult); 

    btnCalculate = (Button) findViewById(R.id.btnCalculate); 

    btnCalculate.setOnClickListener(this); 



spnOperators.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
       { 
        @Override 

        public void onItemSelected(AdapterView<?> parent, View view, int position, long l) 
        { 
         String num1 = etFirstnumber.getText().toString(); 
         String num2 = etSecondnumber.getText().toString(); 
         int x = Integer.parseInt(num1); 
         int y = Integer.parseInt(num2); 

         String SelectedItem = parent.getItemAtPosition(position).toString(); 
         if (SelectedItem.equals("+")) 
         { 
          result = x + y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("-")) 
         { 
          result = x - y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("*")) 
         { 
          result = x * y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("/")) 
         { 
          result = x/y; 
          tvResult.setText(String.valueOf(result)); 
         } 

        } 

        @Override 
        public void onNothingSelected(AdapterView<?> adapterView) 
        { 

        } 
       }); 
} 
+0

,我想我什麼程序做,當我按下按鈕時只計算。 –

+0

沒問題。只需發給我代碼,我會修復它中的錯誤,並將您發回給您 –

+0

舊代碼或我實現的代碼是什麼? –

0

試試下面的代碼:

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 

String num1="",num2=""; 
int x=0,y=0; 
String SelectedItem ; 

private TextView tvResult; 
private EditText etFirstnumber, etSecondnumber; 
private Button btnCalculate; 
private Spinner spnOperators; 
private int result; 

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


} 

private void init() 
{ 
    etFirstnumber = (EditText) findViewById(R.id.etFirstnumber); 
    etSecondnumber = (EditText) findViewById(R.id.etSecondnumber); 

    spnOperators = (Spinner) findViewById(R.id.spnOperators); 

    tvResult = (TextView) findViewById(R.id.tvResult); 

    btnCalculate = (Button) findViewById(R.id.btnCalculate); 

    btnCalculate.setOnClickListener(this); 

    num1 = etFirstnumber.getText().toString(); 
    num2 = etSecondnumber.getText().toString(); 
    x = Integer.parseInt(num1); 
    y = Integer.parseInt(num2); 


    spnOperators.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
       { 
        @Override 

        public void onItemSelected(AdapterView<?> parent, View view, int position, long l) 
        { 

         SelectedItem = parent.getItemAtPosition(position).toString(); 

        } 

        @Override 
        public void onNothingSelected(AdapterView<?> adapterView) 
        { 

        } 
       }); 
} 


@Override 
public void onClick(View view) 
{ 


    try { 
     switch (view.getId()) { 
      case R.id.btnCalculate: 
       calculate(); 
       break; 
     } 
    }catch(Exception e) 
    { 
     tvResult.setText("Error"); 
    } 
} 

public void calculate(){ 
    if (SelectedItem.equals("+")) 
         { 
          result = x + y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("-")) 
         { 
          result = x - y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("*")) 
         { 
          result = x * y; 
          tvResult.setText(String.valueOf(result)); 
         } 
         if (SelectedItem.equals("/")) 
         { 
          result = x/y; 
          tvResult.setText(String.valueOf(result)); 
         } 

} 
} 
相關問題