2016-09-19 11 views
0
  • 誰downvotes - 請解釋一下,我努力學習,不是專家,程序員以及尋找幫助,同時試圖弄清楚什麼是錯的 - downvoting我是當有人試圖學習沒有幫助。

在我的android項目中,我有幾個.java文件,其中一個是Global.java文件。試圖在所有類中使用靜態void?

我想什麼做的,就是創造,我可以通過簡單的調用的方法;

Global.showAdmob(); 

來自任何其他java文件。

我的問題是,當我嘗試創建Global.java文件中的方法,它提到

這裏在靜態情況下不能使用這個'就是我試圖從其他調用文件;

private static InterstitialAd interstitial; 

     public static void displayInterstitial1() { 
     if (interstitial.isLoaded()) { 
     interstitial.show(); 
     } 
    } 

    public static void showAdmob() { 

     interstitial = new InterstitialAd(this); 
     interstitial.setAdUnitId(MY_AD_UNIT_ID); 

     AdRequest adRequest = new AdRequest.Builder().build(); 

     interstitial.loadAd(adRequest);  

     interstitial.setAdListener(new AdListener(){ 
      public void onAdLoaded(){ 
       displayInterstitial1(); 
      } 

      public void onAdClosed(){ 

      } 

      public void onAdFailedToLoad(int errorCode){ 


      } 

    }); 
    } 
+0

從下方法聲明中刪除私有靜態。 –

+0

以及可能是因爲'this'在'static'上下文中沒有意義。你通過將'this'傳遞給'InterstitialAd'構造函數來達到什麼目的?這裏應該代表什麼? – SomeJavaGuy

+0

http://stackoverflow.com/questions/11664522/why-cant-we-use-this-keyword-in-a-static-method –

回答

1

可能是你必須在你的

Global.showAdmob(); 

Global.showAdmob(MainActivity.this); 

因爲全球發送方面值不是非此即彼活動或片段類,並在您的全球您必須更改爲

interstitial = new InterstitialAd(context); 

希望它能幫助你。

+0

嗨拉胡爾,謝謝你,所以我也需要在哪裏聲明上下文?就像在文件頂部一樣; 'static context context;' ? – Hypergater

+0

不需要聲明,你可以將它作爲你的方法的參數。 –

+0

如果我調用'Global.showAdmob(MainActivity.this);'我收到一個錯誤「範圍內沒有可以訪問MainActivity類型的封閉實例」 – Hypergater

相關問題