Создание onClickListener статическим методом - PullRequest
0 голосов
/ 30 мая 2019
View.OnClickListener ocl = new View.OnClickListener(){
    public void onClick(View v) {
        this.ocl_action();
    }

    public void ocl_action() {
        // TODO Auto-generated method stub
        for(int i=0; i<5;i++){                               }
            Toast.makeText(ControllerProjMain.this,"hi",Toast.LENGTH_LONG).show();           
        }
    }
};

Не работает, если я просто позвоню ocl.ocl_action();

Ответы [ 3 ]

0 голосов
/ 30 мая 2019

Смотрите изменения в вашем коде.Вам необходимо определить метод ocl_action вне слушателя.

View.OnClickListener ocl = new View.OnClickListener(){
    public void onClick(View v) {
        this.ocl_action();
    }};

public void ocl_action() {
 // TODO Auto-generated method stub
  for(int i=0; i<5;i++){                              
  Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_LONG).show();   
  }
}
0 голосов
/ 30 мая 2019

Прежде всего, выведите свою функцию за пределы метода onClick().Внутри onClick() метод this не укажет вашу активность.Поэтому удалите this во время вызова функции.

View.OnClickListener ocl = new View.OnClickListener(){
public void onClick(View v) {
    ocl_action();
}};

public void ocl_action() {
 // TODO Auto-generated method stub
  for(int i=0; i<5;i++){                              
  Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_LONG).show();   
  }
}
0 голосов
/ 30 мая 2019

Определение функции ocl_action () вне тела слушателя и удаление ключевого слова this при вызове функции.

...