Метод Android setOnClickListener-как он работает?
у меня проблемы с пониманием этого кода. Я понимаю это findViewById
получит виджет кнопки, а затем он бросит его. Затем он будет использовать кнопку для вызова setOnClickListener
метод. Однако я не знаю, что это за аргумент передается в setOnClickListener
и я никогда не видел такого кода раньше. Как получается, что он создает новый объект, но может создать собственный метод в аргументе другого метода? Было бы здорово, если бы кто-нибудь смог это объяснить. Кроме того, какой тип объекта the setOnClickListener
метод принятия?
btn = (Button)findViewById(R.id.firstButton);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv.setText(months[rand.nextInt(12)]);
tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1));
}
});
3 ответов
как это работает. Вид.OnClickListenere определяется -
public interface OnClickListener {
void onClick(View v);
}
насколько нам известно, вы не можете создать экземпляр объекта OnClickListener
, поскольку у него нет реализованного метода. Таким образом, есть два способа - вы можете реализовать этот интерфейс, который переопределит onClick
способ такой:
public class MyListener implements View.OnClickListener {
@Override
public void onClick (View v) {
// your code here;
}
}
но это утомительно делать каждый раз, когда вы хотите установить прослушиватель щелчка. Поэтому, чтобы избежать этого, вы можете предоставить реализацию для метода на месте, как в Примере, который вы привели.
setOnClickListener
принимает View.OnClickListener
в качестве параметра.
Это лучший способ реализовать Onclicklistener для многих кнопок подряд реализовать представление.onclicklistener.
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Это кнопка в MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_submit = (Button) findViewById(R.id.submit);
bt_submit.setOnClickListener(this);
}
Это метод переопределения
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.submit:
//action
break;
case R.id.secondbutton:
//action
break;
}
}
то, что руководство говорит о setOnClickListener
метод:
public void setOnClickListener (View.OnClickListener l)
добавлено в API level 1 зарегистрируйте обратный вызов, который будет вызываться при этом представлении щелкает. Если это представление не кликабельно, оно становится кликабельным.
параметры
L вид.OnClickListener: обратный вызов, который будет выполняться
и обычно вы должны использовать его так
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this);
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
...
}
взгляните на этот урок тоже создание простого калькулятора с помощью Android Studio.