2017-08-21 11 views
-2

私はアンドロイド計算機を作っています。私はいくつかの機能を作ったが、最初の問題はダブルクリック操作だった。私は試したができなかった。 2つの操作をクリックすると、結果として両方がテキストビューに表示されます。私はあなたのコードをコメントに投稿してくださいダブルクリック操作の問題を解決することができます私のコードを投稿します。時間のアンドロイドで1つの操作を実行する方法は?

public class MainActivity extends AppCompatActivity { 

    private TextView _screen; 
    private TextView _result; 
    private String display = ""; 
    private String currentOperator; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     _screen = (TextView) findViewById(R.id.txtScreen); 
     _result = (TextView) findViewById(R.id.id_result); 
    } 

    public void updateScreen() { 
     _screen.setText(display); 
    } 

    public void onClickNumber(View v) { 
     Button b = (Button) v; 
     display += b.getText(); 
     updateScreen(); 
    } 

    public void onClickOperator(View v) { 
     Button b = (Button) v; 
     display += b.getText(); 
     currentOperator = b.getText().toString(); 
     updateScreen(); 
    } 

    public void clear() { 
     display = ""; 
     currentOperator = ""; 
    } 

    public void onClickClear(View view) { 
     clear(); 
     updateScreen(); 
    } 

    public double operate(String a, String op, String b) { 
     switch (op) { 
      case "+": 
       return Double.valueOf(a) + Double.valueOf(b); 
      case "-": 
       return Double.valueOf(a) - Double.valueOf(b); 
      case "*": 
       return Double.valueOf(a) * Double.valueOf(b); 
      case "/": 
       return Double.valueOf(a)/Double.valueOf(b); 
      default: 
       return -1; 
     } 
    } 

    public void onClickEqual(View v) { 
     String[] operation = display.split(Pattern.quote(currentOperator)); 
     _result.setText(String.valueOf(operate(operation[0], currentOperator, operation[1]))); 
    } 
} 

答えて

0

は、私は二重の動作に関するご質問から理解してみましょうあなたはそれが(提案updateScreenあなたの方法として)のTextViewに2回表示されます+のためにもう一度クリックしたときに+の操作を実行しているとしていることです。それが問題ならば、あなたは以下に述べるようにすることができます

public void updateScreen() { 
     if (screen.getText().toString().equalsIgnoreCase("")) { 
      screen.setText(display); 
     } else if (!display.equalsIgnoreCase(screen.getText().toString())) { 
      screen.setText(""); 
      screen.setText(display); 
     } else { 
      //this is the case that means that operator is already set on the text 
     } 
    } 

あなたを助ける希望。

+0

このような問題はありません。 +と - をクリックすると、両方の(+ - )がテキスト表示になります。私は2つの操作を押すと1つしか表示されません。 – Aziz

+0

あなたは上記の解決策を試しましたか? –

関連する問題