2017-06-06 144 views
-1

我剛剛開始學習android,並開始製作一個實驗性應用程序。我的目標是當我按下按鈕時,文本應該以這種方式更改:當它處於「OFF」狀態時,按下按鈕應使其成爲「ON」並且相反。 這裏是我的代碼:我每次按下按鈕時如何更改textView的文本?

public class MainActivity extends AppCompatActivity { 

    private TextView textView; 

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

     textView = (TextView) findViewById(R.id.TextView); 
     Button button = (Button) findViewById(R.id.button); 

     button.setOnTouchListener(new View.OnTouchListener(){ 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       String text=""; 
        if (textView.getText().equals("ON")) { 
         text="OFF"; 
        } else if (textView.getText().equals("OFF")) { 
         text="ON"; 
        } 
       textView.setText(text); 
       return false; 
      } 

     }); 
    } 
} 

當我運行它,然後按下按鈕,該應用程序顯示了一秒鐘,然後「ON」的一小部分「OFF」再試一次發生每次我按下按鈕時, 「ON」是默認值。我只想知道我在這裏錯過了什麼?

回答

3

您必須使用setOnClickListener而不是setOnTouchListener,因爲觸摸比點擊更明智。撰寫該代碼:

button.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     String text=""; 
      if (textView.getText().equals("ON")) { 
       text="OFF"; 

      } 
      else if (textView.getText().equals("OFF")) { 
       text="ON"; 

      } 
     textView.setText(text); 
    } 

}); 
+0

非常感謝你的工作!我想我必須檢查onclick和ontouch之間的區別。 –

1

有大量的MotionEvent s產生了觸摸。尋找Action 把你的代碼放在裏面event.getAction()==MotionEvent.ACTION_DOWN

相關問題