Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 隐藏和显示警告_Java_Android_Adview - Fatal编程技术网

Java 隐藏和显示警告

Java 隐藏和显示警告,java,android,adview,Java,Android,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

我有一个表面视图和一个建议,我画了这样的建议:

    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调用它,但它给了我“只有创建视图的原始线程才能接触其视图。”异常。我该怎么办?

我不知道从哪个线程调用这些方法,但所有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);
        }
    });
}

等等,它会调用set visible或者无限次,因为它是可运行的吗?不是。顺便说一句,可运行只是一个要执行的命令,通常在单独的线程中运行。它不是无限的。