0

私はアプリケーションを持っています。クラスがあります。たとえば、私はこれらのクラスを持っています:

-MainActivity.java

-AppName.java

-GameScreen.java

-GamePlayScreen.java

次のように MainActivity.java でコード化された広告を掲載しました。

public class MainActivity extends AndroidApplication
{
    protected AdView adView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    RelativeLayout layout = new RelativeLayout(this);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,      WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
    cfg.useGL20 = false;
    View gameView = initializeForView(new AppName(), cfg);

    AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxxxxx");

    AdRequest request = new AdRequest();
    request.addTestDevice("xxxxxxxxxxxxxxxx");
    adView.loadAd(request);

    layout.addView(gameView);

    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

    layout.addView(adView, adParams);

    setContentView(layout);
    }
}

私はバナートップセンターを持っています。いいですね。AppName.java は次のとおりです。

public class AppName extends Game
{
@Override
public void create() 
{
    Assets.load();
    setScreen(new GameScreen(this, Settings.STATE_START));
}

@Override
public void resize(int width, int height)
{
    super.resize(width, height);
}

@Override
public void pause() 
{

}

@Override
public void resume() 
{

}

@Override
public void dispose()
{
    Assets.dispose();
    getScreen().dispose();
}
}

すべて順調です。まだバナーがあります。しかし、問題はここから始まります。私のGameScreenには、次のようなGamePlayScreenへのリンクがあります。

問題なく GamePlayScreen に行きます。

game.setScreen(new GamePlayScreen(game, i + 1));

今、私はゲームをプレイしています。しかし、ここのバナーは見たくありません。

問題は、GamePlayScreen で adView を無効にするにはどうすればよいですか? 別のクラスから MainActivity.java を変更しようとすると、非常に良い例外が表示されることを経験しました。

回答とコメントありがとうございます。そして、アプリに広告を統合したい人にとっては良い例だと思います.

4

2 に答える 2

0

adView public static を宣言すると、activityName.AdView.setVisibility(View.GONE); を介してアクセスできるようになります。

あなたの活動でそれをインスタンス化することを確認してください-

于 2012-12-05T20:04:06.407 に答える
0

たとえば、実行時の動作を変更するために戦略的なパターンを使用することを考えることができます。

public class Game { 
    ShowAdBehavior showAdBehavior;

    void setShowAdBehavior(ShowAdBehavior qb)
    {
        showAdBehavior = qb;
    }   

    void performAd(){
        showAdBehavior.AdArea();
    }   

    public void display() {

    }
}



public class AppName extends Game {
    public AppName()
    {
        //set you default behaviour
        showAdBehavior = new CanShowAd();       
    }

}


public interface ShowAdBehavior {
    public void AdArea();
}


public class CantShowAd implements ShowAdBehavior{
    @Override
    public void AdArea() {
        // you can pass adView as a paramater here and setvisibility VISIBLE
        System.out.println("dont show ad");         
    }
}


public class CanShowAd implements ShowAdBehavior{

    @Override
    public void AdArea() {
       // you can pass adView as a paramater here and setvisibility GONE
        System.out.println("show ad");      
    }
}


public class MainClass {

    public static void main(String[] args) {

           // In your activity you can set the behavior


        AppName appName = new AppName();
        appName.performAd();        
        appName.setShowAdBehavior(new CantShowAd());        
        appName.performAd();        
    }
}

出力

広告を表示する 広告を表示しない

于 2012-12-05T21:38:17.173 に答える