2016-08-17 4 views
-4

私はAndroidスタジオの初心者で、2つの関数を使ってcalcでCボタンを作りたいと思います。 これを行うにはどうすればいいですか?1回のタップでCボタンで1つの数字だけが消去され、TextViewですべての数字が消去されますか?電卓に2つの機能Cボタンをプログラムするには?

findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      txtScreen.setText(""); // Clear the screen 
      // Reset all the states and flags 
      lastNumeric = false; 
      stateError = false; 
      lastDot = false; 
+0

Aボタンを件名としますか?あなたはどう思いますか? – greenapps

+0

これで、ロジックhttp://www.hackpundit.com/android-tutorial-simple-calculator-app/にお手伝いします。 – sushildlh

+0

を10で割り、**商を**再びtextViewに入れます。あなたの番号の最後の数字を削除してください。 – sushildlh

答えて

1

これを実現するには、onClickListenerとonLongClickListenerを設定できます。

cButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String currentText = textView.getText().toString(); 
      if(currentText.length >= 2){ 
       currentText = currentText.substring(0, currentText.length - 2); 
      }else{ 
       currentText = ""; 
      } 
      textView.setText(currentText); 
     } 
}); 



cButton.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      textView.setText(""); 
      return true; 
     } 
}); 
+2

余分な 'else'ブランチは、残っている' char'が1つしかないときに問題を解決します。 @Juricaは、この実装を使用します。 – Subby

+0

ありがとう、それはうまく動作します:) – Jurica

2

あなたはonClick()onLongPress()方法に見たことがありますか?

cancelButton.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      myTextView.setText(""); 
      return true; 
     } 
    }); 

button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      removeOneCharacter(); 
     } 
}); 

private void removeOneCharacter() 
{ 
    String textViewValue = myTextView.getText().toString(); 
    if (textViewValue != null && textViewValue.length >= 2) 
    { 
     myTextView.setText(textViewValue.substring(0, textViewValue.length() - 2); 
    } 
} 

onClick()方法は、一度にTextViewからcharに除去します。しかしながら、onClick()メソッドはTextViewからString全体を削除しますが、サブ文字列の上限によってExceptionが発生するのを防ぐために既に2つ以上の文字があるかどうかだけを考慮します。

ここでの改善点は、ロングプレス内の文字の長さをチェックし、残りの文字が1つしかない場合にクリアを実行するif関数を追加することです。

+0

OPが 'TextView'ロジックから1文字を削除する必要があります... – sushildlh

+0

'txtScreen.setText(" ");'を追加しても、LongPressの作業はうまくいきます。 – Jurica

+0

@Juricaあなたがクリックをしたときに 'TextView'であなたの価値は何でしたか? – Subby

関連する問題