2015-11-29 93 views
-1

我必須減少一個計數器當一個字符被寫入,但我的代碼正在減少兩個字符而不是一個,但只有當刪除鍵被按下,但如果我按另一個鍵不起作用當一個鍵被按下時(ANDROID)減少一個計數器

private Button send; 
private TextView max; 
private TextView msg; 
int limit=140; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    max = (TextView) findViewById(R.id.max); 
    send = (Button) findViewById(R.id.send); 

    msg = (TextView) findViewById(R.id.msg); 
    msg.setOnKeyListener(this); 

} 


@Override 
public void onClick(View view) { 
} 
@Override 
public boolean onKey(View view, int i, KeyEvent keyEvent) { 
    max.setText(String.valueOf(limit--)); 
    return false; 
} 

回答

0

奧基我已經找到了答案,

首先味精是不是一個TextView,是的EditText

,然後我們可以使用addTextChangeListener。

感謝大家誰迴應

private Button send; 
private TextView max; 
private EditText msg; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    max = (TextView) findViewById(R.id.max); 
    send = (Button) findViewById(R.id.send); 

    msg = (EditText) findViewById(R.id.msg); 
    msg.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      max.setText(String.valueOf(140- (msg.getText().toString().length()))); 
      if(msg.getText().toString().length()>=140){ 

       send.setEnabled(false); 


      }else 
       send.setEnabled(true); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

} 


@Override 
public void onClick(View view) { 
} 
0

問題是,onKey被調用兩次,一次爲down,一次爲up。 您可以使用另一種方法,如onkeydown事件:

onKeyDown documentation

public boolean onKeyDown(int keyCode, KeyEvent event) { 

    return super.onKeyDown(keyCode, event); 

} 

或使用安其使用的過濾器。

0

onKey被擊發兩次。一旦按下鍵,一次釋放。

或者你可以嘗試:

  1. onKeyDown()
  2. onKeyUp()
  3. KeyEvent.getAction().

enter image description here

在這個java的圖像,你可以看到人提出既是發佈和一個按下的方法。這張圖片是針對java的,但android的概念是一樣的。使用我在該編號列表中給出的方法。

否則,現在您正在監聽兩個事件。

右側是按鍵按壓,左邊是關鍵發佈:

enter image description here

如果這是有幫助的,請標記爲最佳答案。如果您需要更多幫助,請告訴我!

相關問題