2012-03-24 2 views
0

У меня есть много кнопок внутри моего приложения, и для каждой кнопки мне нужно создать onClickListener, это приведет к сбою строки кода.Создание классов и их использование в проекте

Так я создать класс для onClickListener ниже:

import android.app.Activity; 
    import android.content.Intent; 
    import android.view.View; 

    public class OnClickListener implements android.view.View.OnClickListener{ 

     Activity current; 
     Class<?> goTo; 

     public OnClickListener(Activity arg0, Class arg1){ 
      this.current = arg0; 
      this.goTo = arg1; 
     } 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(current, goTo); 
     } 

} 

и теперь я хочу, чтобы перейти к следующей операции, когда нажатие кнопки, но когда я ставлю эту строку startActivity(intent); компилятор выдает ошибку The method startActivity(Intent) is undefined for the type OnClickListener

Я не знаю, где я ошибаюсь и чего не хватает. Пожалуйста, помогите мне решить эту проблему

ответ

0

Вы можете сделать по-другому тоже, пусть ваш класс реализует интерфейс OnClickListener, а затем реализовать onClick(...) метод, a в этом методе, включите идентификатор этого вида:

@Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.btn1: 
       ... 
      case R.id.btn2: 
       ... 
     } 
    } 
-1

Используйте название вашей деятельности в качестве префикса, таких как MyActivity.this.startActivity(intent)

+0

но это класс, как я могу использовать активность в качестве префикса? – Pari

+0

Вы указываете имя класса своей деятельности. Затем используйте 'this' для ссылки на текущий экземпляр. – techiServices

+0

@Pari Вы класс должен быть «активностью», если вы хотите это сделать. Проверьте подробности в моем ответе ниже – GETah

0

startActivity не может быть найден в текущем контексте, потому что ваш класс не является Activity (startActivity является методом из Activity класс). Посмотрите на это link, чтобы узнать больше о Activity класс.

Вернуться к вашей проблеме: Если переменная current член хорошо установлен, то вы можете просто сделать следующее:

@Override 
public void onClick(View v) { 
    Intent intent = new Intent(current, goTo); 
    current.startActivity (intent); 
} 
+3

@DownVoter, комментарий, пожалуйста? – GETah

+0

спасибо за ваш ответ, я пробовал, но это еще не начало следующей деятельности. Я думаю, что что-то не так с моей переменной класса. Я так называю «Класс goTo' это правильный путь? – Pari

+0

@techiServices - позвольте мне понять это прямо. Вы говорите, что глупые downvotes забавны? Что они хорошие? –