2016-10-03 2 views
0
Button button = (Button)findViewById(R.id.button1); 

button.setOnTouchListener(new OnTouchListener() { 

    @Override 
    public boolean onTouch(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      //Insert desired code here 
      return true; 
     } 
     return false; 
    } 
}); 

public void backtogreen(View view) { 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    startActivity(intent); 
} 

Как исправить этот код? У меня есть, что ошибки:не может решить символ 'setOnTouchListener'

  • не может разрешить символ 'setOnTouchListener' - для setOnTouchListener
  • недействительным метод декларации; типа возвращаемого требуется - для onTouchListener
  • аннотаций здесь не разрешен - для @Override выше общественных булева
  • не может разрешить символ «событиям» для Боте «событие»
  • не может возвращать значение из метода с ничтожным типом результата для return true и return false

Помогите!

ответ

0

Неправильная подпись вашего метода. Попробуйте этот код:

button.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       //Insert desired code here 
       return true; 
      } 
      return false; 
     } 
    }); 
+0

Это был asignment, я хотел бы знать, как бороться с этими ошибками. Что мне следует кодировать, например? сделать «View v» правильным? – Rediner

+0

@Rediner. Другой ответ должен был устранить все проблемы в коде. Если вы хотите изменить поведение клика, используйте 'button.setOnClickListener()'. – Shaishav

+0

Знаете ли вы, что можно «пронести» по некоторым кнопкам с помощью onTouchlistener и заставить их выполнять подряд? – Rediner

4

Вы не можете запускать код, отличный от примитивного назначения в корпусе класса. Ваш код должен быть в какой-то метод, как onCreate:

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

    Button button = (Button) findViewById(R.id.button1); 
    button.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View view, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       //Insert desired code here 
       return true; 
      } 
      return false; 
     } 
    }); 
} 
+0

Моя главная цель - заставить кнопку работать на ощупь, как будто она была нажата. Теперь я борюсь с ошибками по моему коду :( – Rediner

0

Используйте следующий метод

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

Button button = (Button) findViewById(R.id.button1); 



     OnTouchListener m_onTouchListener = new OnTouchListener() { 
     @Override 

     public boolean onTouch(View p_v, MotionEvent p_event) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      //Insert desired code here 
      return true; 
     } 
     return false; 
     } 
    }; 

    button.setOnTouchListener(m_onTouchListener); 

} 
Смежные вопросы