Android 如何在适配器类中放置州际Ad?

Android 如何在适配器类中放置州际Ad?,android,admob,interstitial,Android,Admob,Interstitial,我在main Activity中有一个ViewPager,当您触摸适配器内的每个图像时,它会打开一个新的Activity 有人知道如何在加载这些新活动之前显示广告吗 如您所见,我有一个名为customswipeadapterfolds的适配器,它负责打开新活动,并在MainActivity中显示如何加载广告,但我不知道如何在非活动上实现广告 public class MainActivity extends AppCompatActivity { private static fin

我在
main Activity
中有一个
ViewPager
,当您触摸适配器内的每个图像时,它会打开一个新的
Activity

有人知道如何在加载这些新活动之前显示广告吗

如您所见,我有一个名为
customswipeadapterfolds
的适配器,它负责打开新活动,并在
MainActivity
中显示如何加载广告,但我不知道如何在非活动上实现广告

public class MainActivity extends AppCompatActivity {


    private static final int START_LEVEL = 1;
    private int mLevel;
    private Button mNextLevelButton;
    private InterstitialAd mInterstitialAd;
    private TextView mLevelTextView;


    private ViewPager viewPager;
    private CustomSwipeAdapterCapas adapter;



    //=================================

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create the next level button, which tries to show an interstitial when clicked.
        mNextLevelButton = ((Button) findViewById(R.id.next_level_button));
        mNextLevelButton.setEnabled(false);
        mNextLevelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showInterstitial();
            }
        });



        // Create the text view to show the level number.
        mLevelTextView = (TextView) findViewById(R.id.level);
        mLevel = START_LEVEL;

        // Create the InterstitialAd and set the adUnitId (defined in values/strings.xml).
        mInterstitialAd = newInterstitialAd();
        loadInterstitial();

        // Toasts the test ad message on the screen. Remove this after defining your own ad unit ID.
        Toast.makeText(this, TOAST_TEXT, Toast.LENGTH_LONG).show();



        viewPager = findViewById(R.id.viewpager_main_xml);
        adapter = new CustomSwipeAdapterCapas(this);
        viewPager.setAdapter(adapter);

    }




   //=====================================

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    @Override
    protected void onStop() {
        super.onStop();

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

    }

    @Override
    protected void onRestart() {
        super.onRestart();

    }

    private InterstitialAd newInterstitialAd() {
        InterstitialAd interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(getString(R.string.interstitial_ad_unit_id));
        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdClosed() {
                // Proceed to the next level.
                goToNextLevel();
            }
        });
        return interstitialAd;
    }

    private void showInterstitial() {
        // Show the ad if it's ready. Otherwise toast and reload the ad.
        if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            Toast.makeText(this, "Ad did not load", Toast.LENGTH_SHORT).show();
            goToNextLevel();
        }
    }

    private void loadInterstitial() {
        // Disable the next level button and load the ad.
        mNextLevelButton.setEnabled(false);
        AdRequest adRequest = new AdRequest.Builder()
                .setRequestAgent("android_studio:ad_template").build();
        mInterstitialAd.loadAd(adRequest);
    }

    private void goToNextLevel() {
        // Show the next level and reload the ad to prepare for the level after.
        mLevelTextView.setText("Level " + (++mLevel));
        mInterstitialAd = newInterstitialAd();
        loadInterstitial();
    }

}


我也面临着同样的问题。 在您的情况下,不要从适配器活动打开间隙广告,而是从适配器活动的下一个活动打开它。 以下是我的解决方案: 将ActuviySB视为适配器活动。

  • 假设有3个活动,开始顺序如下:

    Activity_A --> Activity_B --> Activity_C.
    
  • 现在我想显示
    Activity\u B
    Activity\u C
    之间的间隙广告

  • 我首先在Activity_A中加载了间隙广告,然后在
    Activity_C
    中调用(或显示)

您可以这样做:

public void showme(){

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
        AdRequest adRequest = new AdRequest.Builder()
                .build();
        mInterstitialAd.loadAd(adRequest);

        mInterstitialAd.setAdListener(new AdListener()
        {

            @Override
            public void onAdClosed()
            {
                //reload interstitial
                AdRequest adRequest = new AdRequest.Builder()
//                        .addTestDevice("YOUR_DEVICE_ID")
                        .build();
                mInterstitialAd.loadAd(adRequest);
            }
        });
    }

    public static void showInterstitial() {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
在活动A即Main活动中,添加如下代码:

public void showme(){

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
        AdRequest adRequest = new AdRequest.Builder()
                .build();
        mInterstitialAd.loadAd(adRequest);

        mInterstitialAd.setAdListener(new AdListener()
        {

            @Override
            public void onAdClosed()
            {
                //reload interstitial
                AdRequest adRequest = new AdRequest.Builder()
//                        .addTestDevice("YOUR_DEVICE_ID")
                        .build();
                mInterstitialAd.loadAd(adRequest);
            }
        });
    }

    public static void showInterstitial() {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
在OnCreate内部的活动中调用showme()

在活动C中,将以下代码粘贴到OnCreate中:

Activity_A.showInterstitial();

而且,这种方法没有违反谷歌Admob关于中间广告和横幅广告的任何政策。

我也遇到过同样的问题。 在您的情况下,不要从适配器活动打开间隙广告,而是从适配器活动的下一个活动打开它。 以下是我的解决方案: 将ActuviySB视为适配器活动。

  • 假设有3个活动,开始顺序如下:

    Activity_A --> Activity_B --> Activity_C.
    
  • 现在我想显示
    Activity\u B
    Activity\u C
    之间的间隙广告

  • 我首先在Activity_A中加载了间隙广告,然后在
    Activity_C
    中调用(或显示)

您可以这样做:

public void showme(){

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
        AdRequest adRequest = new AdRequest.Builder()
                .build();
        mInterstitialAd.loadAd(adRequest);

        mInterstitialAd.setAdListener(new AdListener()
        {

            @Override
            public void onAdClosed()
            {
                //reload interstitial
                AdRequest adRequest = new AdRequest.Builder()
//                        .addTestDevice("YOUR_DEVICE_ID")
                        .build();
                mInterstitialAd.loadAd(adRequest);
            }
        });
    }

    public static void showInterstitial() {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
在活动A即Main活动中,添加如下代码:

public void showme(){

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
        AdRequest adRequest = new AdRequest.Builder()
                .build();
        mInterstitialAd.loadAd(adRequest);

        mInterstitialAd.setAdListener(new AdListener()
        {

            @Override
            public void onAdClosed()
            {
                //reload interstitial
                AdRequest adRequest = new AdRequest.Builder()
//                        .addTestDevice("YOUR_DEVICE_ID")
                        .build();
                mInterstitialAd.loadAd(adRequest);
            }
        });
    }

    public static void showInterstitial() {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
在OnCreate内部的活动中调用showme()

在活动C中,将以下代码粘贴到OnCreate中:

Activity_A.showInterstitial();

此外,此方法不会违反任何Google Admob的间隙广告和横幅广告政策。

您应该执行以下代码。。。。 在顶部的适配器类中声明此代码。。。 私人间质

在此之后,将其余代码放入onBindViewHolder()中

/////onAdClosed()方法您可以将您的意图或任何您想要的内容放入其中,这是为了当您关闭add时,意图必须知道要做什么。。。 } });

在此之后,您可以将代码放入item.onClicklistner方法中,如下所示

itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    Intent intent = new Intent(context, Full_Image_Activity.class);
                    intent.putExtra("IMG",picsArray[getAdapterPosition()]);
                    context.startActivity(intent);
                }

            }
        });
在else{}中,您可以像intent或任何您想做的事情一样放置代码。。。
希望它能适用于许多人…

您应该像下面的代码一样。。。。 在顶部的适配器类中声明此代码。。。 私人间质

在此之后,将其余代码放入onBindViewHolder()中

/////onAdClosed()方法您可以将您的意图或任何您想要的内容放入其中,这是为了当您关闭add时,意图必须知道要做什么。。。 } });

在此之后,您可以将代码放入item.onClicklistner方法中,如下所示

itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    Intent intent = new Intent(context, Full_Image_Activity.class);
                    intent.putExtra("IMG",picsArray[getAdapterPosition()]);
                    context.startActivity(intent);
                }

            }
        });
在else{}中,您可以像intent或任何您想做的事情一样放置代码。。。
希望它能为许多人所用…

感谢您的回答,但它对我不起作用,我收到了以下错误:原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean com.google.android.gms.ads.interstituralad.isLoaded()”,在MainActivity中添加了此代码:并调用了showcinterstitual();活动内部:感谢您的回答,但它对我不起作用,我得到了以下错误:由以下原因引起:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“boolean com.google.android.gms.ads.interstitulard.isLoaded()”,在MainActivity中添加了此代码:并调用了showcinterstitual();活动内部: