2014-12-05 6 views
0

Я пытаюсь показать объявление вне MainActivity. Если я называю showAd в этом классе он работает хорошо, и показать свое объявление, но когда я вызываю эту функцию в моем классе игры через реализованный интерфейс У меня есть ошибка: «Требуется главный поток»Вызов функции MainActivity за пределами класса

MMRequest request = new MMRequest(); ; 
    MMInterstitial interstitial; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     MMSDK.initialize(this); 
     interstitial = new MMInterstitial(this);    
     interstitial.setMMRequest(request); 
     interstitial.setApid("xxxxxx"); 

     AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();  

     RelativeLayout layout = new RelativeLayout(this); 

     View gameView = initializeForView(new JumpJackieJump(new RequestHandler(), this), cfg); 
     layout.addView(gameView);   

     setContentView(layout); } 

@Override 
public void showAd() 
{ 
    interstitial.fetch(); 
    interstitial.setListener(new RequestListenerImpl() 
    { 
     @Override 
     public void requestCompleted(MMAd mmAd) 
     { 
      interstitial.display();    
     }   
}); 
+0

Пожалуйста, напишите более полный код. Это не ясно из фрагмента выше. –

ответ

0

Это происходит потому, основная нить - это пользовательский интерфейс. (Имейте в виду, что это только для Android - Для получения дополнительной информации см. this).

Согласно документации на Android, вы должны avoid updating the UI outside the UI thread.

Additionally, the Andoid UI toolkit is not thread-safe. So, you must not manipulate your UI from a worker thread—you must do all manipulation to your user interface from the UI thread.

Это, как говорится, вы можете быть в состоянии делать то, что вы ищете что-то вроде this.

+0

Спасибо. Оно работает! ;) – metalcracker

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