2015-04-05 5 views
0

У меня есть SurfaceView и AdView, я обратил AdView так:Скрытие и показ AdView

g=new GameView(this); 
    setContentView(R.layout.activity_game); 
    RelativeLayout layout = (RelativeLayout)findViewById(R.id.vMain); 
    layout.addView(g); 
    mAdView = new AdView(this); 
    mAdView.setAdSize(AdSize.BANNER); 
    mAdView.setAdUnitId(myId); 
    AdRequest adRequest = new AdRequest.Builder() 
     .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
     .build(); 
    if(mAdView.getAdSize() != null || mAdView.getAdUnitId() != null) 
    mAdView.loadAd(adRequest); 
    ((RelativeLayout)findViewById(R.id.vMain)).addView(mAdView ); 
    mAdView.bringToFront(); 
    mAdView.setVisibility(View.GONE); 

На вершине SurfaceView, и скрыть его. Теперь я хочу показать его, назвав его с поверхности, возможно ли это? Я попытался создать эту функцию: «. Только оригинальный поток, созданный вид может коснуться его мнения».

public void hide(){ 
    mAdView.setVisibility(View.GONE); 

} 
public void show(){ 
    mAdView.setVisibility(View.VISIBLE); 

} 

и вызывать его из SurfaceView, но это дало мне исключение Что делать

ответ

1
?

я не знаю, с какой поток вы были называть эти методы, но все UI обновления должны быть вызваны из основного потока Использование:.

runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     // Update you UI here. 
    } 
}); 

Например:

public void hide(){ 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mAdView.setVisibility(View.GONE); 
     } 
    }); 
} 

public void show(){ 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mAdView.setVisibility(View.VISIBLE); 
     } 
    }); 
} 
+0

Подождите, но не вызовет ли он набор видимых или ушел бесконечно, потому что его можно запустить? – SpoocyCrep

+1

№ http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable) –

+0

Btw, Runnable - это просто команда, которая должна выполняться и часто запускается в отдельном потоке , Это не бесконечно. –

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