2017-04-18 7 views
0

私はアンドロイドゲームで広告を実装しようとしています。私はAdsというクラスを作成し、次のメソッドを使用してスイッチケース内の別のクラスから呼び出すことにしました。 Googleの広告とAndroidで広告のクラスを呼び出す

public class ControlCenter1 extends AppCompatActivity { 

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

      public ControlCenter1(Context context) 
    { 
     mScene = ParrotsConstent.E_SCENARIO.MENU; 
     mContext = context; 
     mScore = new Score(); 
     mSound = new Sound(context); 
     mTimer = new Timer(ParrotsConstent.MAX_TIME); 
     mAnimalPic = new int[(int) ParrotsConstent.GRID_NUM][(int) ParrotsConstent.GRID_NUM]; 
     mPicBak = new int[(int) ParrotsConstent.GRID_NUM][(int) ParrotsConstent.GRID_NUM]; 
     mEffect = new int[(int) ParrotsConstent.GRID_NUM][(int) ParrotsConstent.GRID_NUM]; 
     mDisappearToken = new int[(int) ParrotsConstent.GRID_NUM][(int) ParrotsConstent.GRID_NUM]; 
     mToken = new ActionTokenPool(); 
     init(); 
    } 

    public static Handler mHandler = new Handler(){ 
      @Override 
      public void handleMessage(Message msg) 
      { 
       switch(msg.what) 
       { 
    case GAME_OVER_START: 
        { 
         CtlTip2 ctl = (CtlTip2) drawTip2.control; 
         ctl.init(ParrotsConstent.E_TIP.GAMEOVER.ordinal()); 
         mSound.play(ParrotsConstent.E_SOUND.TIMEOVER); 
         break; 
        } 

     case GAME_OVER_END: 
      { 
       Ads ads = new Ads(); 
       ads.Adss(); 
       break; 
      } 
    } 
    } 

クラスは次のとおりです。

public class Ads extends AppCompatActivity { 

    InterstitialAd mInterstitialAd; 

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

    public void Adss() 
{ 
     AdRequest adRequest = new AdRequest.Builder().build(); 


     mInterstitialAd = new InterstitialAd(this); 
     mInterstitialAd.setAdUnitId(getString(R.string.admob_interstitial_id)); 

     mInterstitialAd.loadAd(adRequest); 

     mInterstitialAd.setAdListener(new AdListener() { 
      public void onAdLoaded() { 
       displayInterstitial(); 
       onPause(); 
      } 

      public void onAdClosed() { 
       onResume(); 
       mScene = ParrotsConstent.E_SCENARIO.RESULT; 
      } 
     }); 
    } 

    public void displayInterstitial() { 
     if (mInterstitialAd.isLoaded()) { 
      mInterstitialAd.show(); 
     } 
    } 
} 

を広告なしでゲームがスムーズに実行されます。私はゲームを実行する前に私はエラーを取得していないが、私はゲームを実行し、私は次の致命的なエラーでゲームを停止してゲームになる。

致命的な例外:メイン プロセス:PID:2566

java.lang.NullPointerException: Attempt to invoke virtual method android.content.res.Resources android.content.Context.getResources()' on a null object reference 
at android.content.ContextWrapper.getResources(ContextWrapper.java:86) 
at android.view.ContextThemeWrapper.getResourcesInternal(ContextThemeWrapper.java:127)                    at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:121)                    atandroid.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:549) 
at android.content.Context.getString(Context.java:476) 
at com.gamingtechnology.parrots.Ads.Adss(Ads.java:69) 
at com.gamingtechnology.parrots.Core.ControlCenter1$2.handleMessage(ControlCenter1.java:1188) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

答えて

1

あなたはそのような活動をインスタンス化することはできません。それは単に動作しません。

startActivityで起動する必要があります。あなたはこのような活動をインスタンス化することはできません

+0

あなたは私の例をしてください与えることはできますか?ありがとう – user3715674

+0

https://developer.android.com/reference/android/app/Activity.html – theblitz

+0

私はメインページに再びあなたを指示として私はそのリンク上の指示に従っているが、私はそれが私の場合にどのようになるか見ることができません。あなたはそれをすることができますか?おそらく私はあなたを助けることができるより多くの情報が必要ですか? – user3715674

1

、 はこの方法を試してみてください、

public class ControlCenter1 extends AppCompatActivity { 
    private static Context mContext; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_control_center1); 
     mContext = this; 

public static Handler mHandler = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) 
     { 
      switch(msg.what) 
      { 
case GAME_OVER_START: 
       { 
        CtlTip2 ctl = (CtlTip2) drawTip2.control; 
        ctl.init(ParrotsConstent.E_TIP.GAMEOVER.ordinal()); 
        mSound.play(ParrotsConstent.E_SOUND.TIMEOVER); 
        break; 
       } 

    case GAME_OVER_END: 
     { 
      Intent intent = new Intent(mContext , Ads.class); 
     mContext .startActivity(intent); 
     break; 
     } 
} 
} 
+0

これは動作しません。私はすべての線を赤くしています。 – user3715674

+0

このケースはアクティビティ内にありますか? – Shivam

+0

はい、そうです。最初はクラスでしたが、同じクラスの中に広告コードを実装しようとしましたが、新しいクラスを作成しようとしましたが、まだ成功しませんでしたので、広告クラスを残しました。 – user3715674

関連する問題