如何在没有方法 onCreate 的情况下在其他 Class 的 MainActivity 中添加 Interstitial AdMob?
how to add Interstitial AdMob out MainActivity in other Class without the Method onCreate?
我是 Java 的初学者。
我在 Eclipse 和 Android Studio 上打开了 Android 个游戏。
当我想添加不包含onCreate方法的MainActivityclass作为Games Example: Pause - Menu ...的Normal类时,仍然是当前对象new InterstitialAd(this);有红色下划线。
我能得到帮助吗?
这是要带入我的源代码的所有数据。
//Class PauseLayer :
import com.exemplapp.myapptetest.RacingActivity;
import com.exemplapp.myapptetest.scene.GameScene;
import com.exemplapp.myapptetest.scene.TitleScene;
import com.exemplapp.nodes.GrowButton;
import com.exemplapp.nodes.MyScene;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.transitions.CCFadeTransition;
public class PauseLayer extends MyScene {
private InterstitialAd interstitial;
public PauseLayer() {
super();
RacingActivity activity = (RacingActivity) CCDirector.sharedDirector().getActivity();
activity.revmob();
CCSprite sprBg = CCSprite.sprite(PATH_BG + "pause_bg-ipad.png");
this.addChild(sprBg);
sprBg.setPosition(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
GrowButton btnResume = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnResume-ipad.png", PATH_BTN + "btnResume-ipad.png",
this, "onResume");
this.addChild(btnResume);
btnResume.setPosition(SCREEN_WIDTH / 2, 260 * 32 / 15);
GrowButton btnReplay = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnReplay-ipad.png", PATH_BTN + "btnReplay-ipad.png",
this, "onReplay");
this.addChild(btnReplay);
btnReplay.setPosition(SCREEN_WIDTH / 2, 220 * 32 / 15);
GrowButton btnMenu = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnMenu1-ipad.png", PATH_BTN + "btnMenu1-ipad.png", this,
"onMenu");
this.addChild(btnMenu);
btnMenu.setPosition(SCREEN_WIDTH / 2, 180 * 32 / 15);
//Admon Interstitial
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
displayInterstitial();
}
});
}
private void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
public void onResume(Object sender) {
this.removeFromParentAndCleanup(true);
}
public void onReplay(Object sender) {
CCDirector
.sharedDirector()
.replaceScene(
CCFadeTransition.transition(0.7f, GameScene
.scene(GameScene.sharedInstance().m_nGameMode)));
}
public void onMenu(Object sender) {
CCDirector.sharedDirector().replaceScene(
CCFadeTransition.transition(0.7f, TitleScene.scene()));
}
}
//Certificate of AndroidManifest :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.exemplapp.myapptetest.RacingActivity"
android:label="@string/title_activity_sling_shot_racing"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.exemplapp.myapptetest.scene.game.PauseLayer"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
</application>
传递上下文中的插页式广告方法或 activity 对象创建。
这意味着我们可以传递上下文或 activity
你可以这样写
interstitial = new InterstitialAd(activity);
其中 activity 是在最终代码上方声明的 RacingActivity 看起来像
public PauseLayer() {
super();
RacingActivity activity = (RacingActivity) CCDirector.sharedDirector().getActivity();
activity.revmob();
CCSprite sprBg = CCSprite.sprite(PATH_BG + "pause_bg-ipad.png");
this.addChild(sprBg);
sprBg.setPosition(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
GrowButton btnResume = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnResume-ipad.png", PATH_BTN + "btnResume-ipad.png",
this, "onResume");
this.addChild(btnResume);
btnResume.setPosition(SCREEN_WIDTH / 2, 260 * 32 / 15);
GrowButton btnReplay = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnReplay-ipad.png", PATH_BTN + "btnReplay-ipad.png",
this, "onReplay");
this.addChild(btnReplay);
btnReplay.setPosition(SCREEN_WIDTH / 2, 220 * 32 / 15);
GrowButton btnMenu = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnMenu1-ipad.png", PATH_BTN + "btnMenu1-ipad.png", this,
"onMenu");
this.addChild(btnMenu);
btnMenu.setPosition(SCREEN_WIDTH / 2, 180 * 32 / 15);
//Admon Interstitial
interstitial = new InterstitialAd(activity);
interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
displayInterstitial();
}
});
}
我是 Java 的初学者。 我在 Eclipse 和 Android Studio 上打开了 Android 个游戏。 当我想添加不包含onCreate方法的MainActivityclass作为Games Example: Pause - Menu ...的Normal类时,仍然是当前对象new InterstitialAd(this);有红色下划线。
我能得到帮助吗? 这是要带入我的源代码的所有数据。
//Class PauseLayer :
import com.exemplapp.myapptetest.RacingActivity;
import com.exemplapp.myapptetest.scene.GameScene;
import com.exemplapp.myapptetest.scene.TitleScene;
import com.exemplapp.nodes.GrowButton;
import com.exemplapp.nodes.MyScene;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.transitions.CCFadeTransition;
public class PauseLayer extends MyScene {
private InterstitialAd interstitial;
public PauseLayer() {
super();
RacingActivity activity = (RacingActivity) CCDirector.sharedDirector().getActivity();
activity.revmob();
CCSprite sprBg = CCSprite.sprite(PATH_BG + "pause_bg-ipad.png");
this.addChild(sprBg);
sprBg.setPosition(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
GrowButton btnResume = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnResume-ipad.png", PATH_BTN + "btnResume-ipad.png",
this, "onResume");
this.addChild(btnResume);
btnResume.setPosition(SCREEN_WIDTH / 2, 260 * 32 / 15);
GrowButton btnReplay = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnReplay-ipad.png", PATH_BTN + "btnReplay-ipad.png",
this, "onReplay");
this.addChild(btnReplay);
btnReplay.setPosition(SCREEN_WIDTH / 2, 220 * 32 / 15);
GrowButton btnMenu = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnMenu1-ipad.png", PATH_BTN + "btnMenu1-ipad.png", this,
"onMenu");
this.addChild(btnMenu);
btnMenu.setPosition(SCREEN_WIDTH / 2, 180 * 32 / 15);
//Admon Interstitial
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
displayInterstitial();
}
});
}
private void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
public void onResume(Object sender) {
this.removeFromParentAndCleanup(true);
}
public void onReplay(Object sender) {
CCDirector
.sharedDirector()
.replaceScene(
CCFadeTransition.transition(0.7f, GameScene
.scene(GameScene.sharedInstance().m_nGameMode)));
}
public void onMenu(Object sender) {
CCDirector.sharedDirector().replaceScene(
CCFadeTransition.transition(0.7f, TitleScene.scene()));
}
}
//Certificate of AndroidManifest :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.exemplapp.myapptetest.RacingActivity"
android:label="@string/title_activity_sling_shot_racing"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.exemplapp.myapptetest.scene.game.PauseLayer"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
</application>
传递上下文中的插页式广告方法或 activity 对象创建。
这意味着我们可以传递上下文或 activity
你可以这样写
interstitial = new InterstitialAd(activity);
其中 activity 是在最终代码上方声明的 RacingActivity 看起来像
public PauseLayer() {
super();
RacingActivity activity = (RacingActivity) CCDirector.sharedDirector().getActivity();
activity.revmob();
CCSprite sprBg = CCSprite.sprite(PATH_BG + "pause_bg-ipad.png");
this.addChild(sprBg);
sprBg.setPosition(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
GrowButton btnResume = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnResume-ipad.png", PATH_BTN + "btnResume-ipad.png",
this, "onResume");
this.addChild(btnResume);
btnResume.setPosition(SCREEN_WIDTH / 2, 260 * 32 / 15);
GrowButton btnReplay = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnReplay-ipad.png", PATH_BTN + "btnReplay-ipad.png",
this, "onReplay");
this.addChild(btnReplay);
btnReplay.setPosition(SCREEN_WIDTH / 2, 220 * 32 / 15);
GrowButton btnMenu = GrowButton.buttonWithSpriteFileName(PATH_BTN
+ "btnMenu1-ipad.png", PATH_BTN + "btnMenu1-ipad.png", this,
"onMenu");
this.addChild(btnMenu);
btnMenu.setPosition(SCREEN_WIDTH / 2, 180 * 32 / 15);
//Admon Interstitial
interstitial = new InterstitialAd(activity);
interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
displayInterstitial();
}
});
}