2017-01-12 10 views
0

Эй, я пытаюсь получить изменение данных в реальном времени в основном действии в своем пользовательском представлении. Я хочу реализовать слушателя для представления, так что всякий раз, когда что-либо изменяется в моей основной деятельности, мой просмотр узнает об этом и действует соответствующим образом.Основная функция прослушивателя в пользовательском представлении?

Ниже приводится моя основная деятельность.

public void setChangeListener(OnChangeListener onChangeListener){ 
    this.onChangeListener = onChangeListener; 
} 

public interface OnChangeListener{ 
    void currentRadius(int r); 
    void currentSpeed(int s); 
} 

Я инициализирован же в Вид,

public CustomView extends View{ 

//CONSTRUCTORS 

//EVERYTHING ELSE 

    //These are inside the init(Context context) method. 
    MainActivity mainActivity = new MainActivity(); 
     mainActivity.setOnChangeListener(new MainActivity.OnChangeListener() { 
      @Override 
      public void currentR(int r) { 
       Log.d("R", ""+r); 
      } 

      @Override 
      public void currentS(int s) { 
       Log.d("S", ""+s); 
      } 
     }); 

} 

Но это дает мне NullPointerException на

onChangeListener.currentR(//INTEGER VALUE); 
onChangeListener.currentS(//INTEGER VALUE); 

которые внутри onProgressChanged Listener.

Что я хочу спросить, так это то, что даже можно отправлять данные с помощью Listeners из Activity to View? Если да, то любые указатели будут оценены. Благодарю.

+1

что посмотреть? объясните – Spartan

+0

Откуда звонит 'onProgressChanged'? Форма 'Aysnc Task'? –

+0

@MayurRaval Нет, это прослушиватель изменений прогресса поиска. –

ответ

1

В MainActivity

CustomView mCustomeView = new CustomView(this); // or Resource id 

Создание методов в CustomView

 public void currentR(int r) { 
      Log.d("R", ""+r); 
     } 

     public void currentS(int s) { 
      Log.d("S", ""+s); 
     } 

Тогда зови, что методы из MainActivity

mCustomeView.currentR(integervalue); 
mCustomeView.currentS(integervalue); 

ПРИМЕЧАНИЕ. Убедитесь, что если вы измените интерфейс из этих методов. Это будет в главной теме пользовательского интерфейса. другой мудрый он будет бросать ошибки

Надежда Эта помощь

+0

Спасибо, я смог добиться того, что искал. (Y), –

0

MainActivity mainActivity = new MainActivity();

Не создавайте экземпляр мероприятия. Пропустите MainActivity контекст к представлению и используйте его для выполнения операций. образец контекста

Context context = MainActivty.this; 
+0

Я пробовал это, я все равно передаю контекст в конструкторе представления, но я не могу использовать его для вызова 'setOnChangeListener' и создания слушателя того же самого, –