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();活动内部: