2017-08-05 59 views
0

我想通過webView中的觸發器來執行AdMob添加,但我無法訪問該方法。它一直要求我使靜態方法,但如果我這樣做,我無法訪問我的一個變量。如何調用displayAd()方法?

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    private InterstitialAd mInterstitialAd; 
    private WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_MainActivity); 
      MobileAds.initialize(this, "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX"); 
      mInterstitialAd = new InterstitialAd(this); 
      mInterstitialAd.setAdUnitId("ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"); 
      mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
      mWebView = (WebView) findViewById(R.id.MainActivity); 
      mWebView.addJavascriptInterface(new WebAppInterface(this), "android"); 
    } 

    public void displayAd() { 
      [Ad Code Here] 
    } 
} 

WebAppInterface.java

public class WebAppInterface { 
     Context mContext; 

     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     @JavascriptInterface 
     public void ad() { 
      MainActivity.displayAd(); 
     } 
    } 

此代碼將無法正常工作。我怎樣才能改變它,使其工作?

+0

爲什麼這個代碼不工作?請發佈錯誤消息,並在帖子中突出顯示錯誤消息中的所有行號。 – tima

+0

@tima無法構建項目,因爲它說我的displayAd()函數需要是靜態的。當我將其更改爲靜態時,它會丟失對mInterstitialAd元素的引用。 – TheAndroidProgrammer

回答

0

試試這個。

public class WebAppInterface { 
     MainActivity mainActivity; 

     WebAppInterface(MainActivity mainActivity) { 
      this.mainActivity= mainActivity; 
     } 

     @JavascriptInterface 
     public void ad() { 
      mainActivity.displayAd(); 
     } 
    } 

,並通過活動引用接口像

mWebView.addJavascriptInterface(new WebAppInterface(MainActivity.this), "android"); 
+0

在WebAppInterface文件中獲取「無法解析displayAd()」。這阻止了我構建應用程序。 – TheAndroidProgrammer

+0

@TheAndroidProgrammer嘗試更新的答案。在Webappinterface文件中將'Activity'更改爲'MainActivity' –

+0

工作原理...有點類似。它會顯示我放在那裏進行測試的日誌文本,但廣告實際上並未打開。我知道廣告正確加載,因爲我有一個偵聽器,可以確保在加載webView之前加載廣告。目前在displayAd()和mInterstitialAd中有'mInterstitialAd.show();'是MainActivity中的一個公共變量。在Javascript界面​​文件中也嘗試過'mainActivity.mInterstitialAd.show()',但是也沒有打開廣告。任何想法或我應該打開一個新的問題線程?沒有看到廣告代碼, – TheAndroidProgrammer