0

実際には、私は無料で有料の味でアプリを作ろうとしています。単純なfindViewByIdメソッドを使用してバインドすると、正常に動作します。しかし、私がバターを追加しようとすると、私は絶望的にバターを抱きしめていました。解決方法NullPointerExceptionバターナイフで無効なcom.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)

MainActivity.javaファイル内のバナーナイフバインドでコンテンツ(AdMobやButtonなど)をバインドしようとしています。 AdMobオブジェクトのnullpointer例外で最初に表示されるNullpointer例外エラーを示します。私はきれいなプロジェクトを実行し、それはbutton.onClickListener Nullpointer例外で表示されます。

public class MainActivity extends AppCompatActivity implements AsyncResponse{ 

    @BindView(R.id.avi) AVLoadingIndicatorView avLoadingIndicatorView; 
    @BindView(R.id.button_jokeTeller) Button button_JokeTeller; 
    @BindView(R.id.instruction_TextView) 
    TextView instruction; 
    @BindView(R.id.container) RelativeLayout relativeLayout; 
    @BindView(R.id.adView) AdView adView; 
    @BindView(R.id.progressBar) LinearLayout linearLayout; 

    private InterstitialAd mInterstitialAd; 
    EndpointsAsyncTask endpointsAsyncTask; 
    private static final String JOKE_TAG="joke"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ButterKnife.bind(this); 

     endpointsAsyncTask = new EndpointsAsyncTask(this); 

     AdRequest adRequestBanner = new AdRequest.Builder().build(); 
     adView.loadAd(adRequestBanner); 

     mInterstitialAd = new InterstitialAd(this); 
     mInterstitialAd.setAdUnitId(getString(R.string.interstitial_ad_unit_id)); 
     AdRequest adRequestInterstitial = new AdRequest.Builder().build(); 
     mInterstitialAd.loadAd(adRequestInterstitial); 

     button_JokeTeller.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       showInterstitial(); 
      } 
     }); 

     mInterstitialAd.setAdListener(new AdListener() { 
      @Override 
      public void onAdClosed() { 
       showProgressbar(true); 
       showJoke(); 
      } 

      @Override 
      public void onAdFailedToLoad(int errorCode) { 
       Toast.makeText(getApplicationContext(), "Ad failed to load! error code: " + errorCode, Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onAdLeftApplication() { 
       showProgressbar(true); 
       Toast.makeText(getApplicationContext(), "Ad left application!", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onAdOpened() { 
       Toast.makeText(getApplicationContext(), "Ad is opened!", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
    private void showInterstitial() { 
     if (mInterstitialAd.isLoaded()) { 
      mInterstitialAd.show(); 
     } 
    } 

    public void showJoke(){ 
     endpointsAsyncTask.execute(getString(R.string.keyword)); 
    } 

    @Override 
    public void processFinish(String result) { 
     Intent intent = new Intent(this, JokeActivity 
       .class) 
       .putExtra(JOKE_TAG, result); 
     showProgressbar(false); 
     startActivity(intent); 
    } 

    public void showProgressbar(boolean a){ 
     if(a==true){ 
      relativeLayout.setVisibility(View.GONE); 
      linearLayout.setVisibility(View.VISIBLE); 
     }else{ 
      linearLayout.setVisibility(View.GONE); 
      relativeLayout.setVisibility(View.VISIBLE); 
     } 
    } 
} 

、3- activity_main.xmlファイル

09-08 19:04:30.860 19466-19466/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: com.santossingh.jokeapp.free, PID: 19466 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.santossingh.jokeapp.free/com.santossingh.jokeapp.free.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                 at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:148) 
                 at android.app.ActivityThread.main(ActivityThread.java:5417) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference 
                 at com.santossingh.jokeapp.free.MainActivity.onCreate(MainActivity.java:62) 
                 at android.app.Activity.performCreate(Activity.java:6237) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                 at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:148)  
                 at android.app.ActivityThread.main(ActivityThread.java:5417)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
09-08 19:04:35.652 837-2192/system_process E/Surface: getSlotFromBufferLocked: unknown buffer: 0xf2cf6c90 
09-08 19:04:56.030 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:06:20.986 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:07:41.011 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:09:01.042 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:10:20.982 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:11:46.019 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:13:06.051 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:14:41.018 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 
09-08 19:16:06.047 837-853/system_process E/BluetoothAdapter: Bluetooth binder is null 

2-MainActivity.java:AdMobのNullPointerExceptionが示しています

ここ

エラーです...助けてください
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/activity_main" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0e73a6" 
    android:padding="10dp" 
    tools:context="com.santossingh.jokeapp.free.MainActivity" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <LinearLayout 
     android:id="@+id/progressBar" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:layout_height="match_parent"> 

    <com.wang.avi.AVLoadingIndicatorView 
     android:id="@+id/avi" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/AVLoadingIndicatorView" 
     android:visibility="visible" 
     app:indicatorName="BallPulseIndicator" 
    /> 
</LinearLayout> 
    <RelativeLayout android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/container"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/instructions" 
      android:textColor="#fff" 
      android:id="@+id/instruction_TextView" 
     /> 

     <Button android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/button_jokeTeller" 
       android:layout_below="@+id/instruction_TextView" 
       android:text="@string/button_text" 
     /> 

     <!-- view for AdMob Banner Ad --> 
     <com.google.android.gms.ads.AdView 
      android:id="@+id/adView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      ads:adSize="BANNER" 
      ads:adUnitId="@string/banner_ad_unit_id"/> 
    </RelativeLayout> 

</RelativeLayout> 

4 - マニフェストファイル

<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

    <application> 
     <activity android:name="com.santossingh.jokeapp.free.MainActivity" 
     > 
      <!-- This meta-data tag is required to use Google Play Services. --> 
      <meta-data 
       android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version"/> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 

    <activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
     android:theme="@android:style/Theme.Translucent"/> 
</manifest> 

答えて

1

あなたはそれのための右の答えがあることである

dependencies { compile 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-compiler:8.0.1' } 
+0

こんにちはAmod Gokhale、実際にはAdMobをバインドするためにバターナイフを使用しました。私の質問は、どのようにbutterjnife APIでこのエラーを解決することです。 – Santosh

+0

依存関係を正しく設定しましたか?依存関係{ コンパイル 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-コンパイラ:8.0.1' } –

+0

このリンクを参照してくださいhttp://stackoverflow.com/questions/37013619/butterknife -8-0-1-not-working –

0

ため

AdRequest adRequestBanner = new AdRequest.Builder().build(); 
**adView = (AdView)this.findViewById(R.id.adView);** 
     adView.loadAd(adRequestBanner); 

以下の更新の依存関係として

adView = (AdView)this.findViewById(R.id.adView); 

変更コードが欠落しています私はgradle 2.2.0またはそれ以降のバージョンを使用しました。だから、JakeWarton githubのリンクに感謝します。[https://github.com/JakeWharton/butterknife]whichは、新しいバージョンのgradleとButterknifeの統合を明確に説明しています。結果 ステップバイステップのGradleの新バージョンでbutterKnifeの実装を次のよう

1-まず、クラスパス 'com.neenbedankt.gradle.plugins:アンドロイド-APT:1.8' 追加の依存関係を:

dependencies { 
     .... 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
} 
第二に

2-、したがって、すべての結論の上にbuild.gradleアプリモジュールbutterKnifeに

dependencies { 
    .... 
    compile 'com.jakewharton:butterknife:8.4.0' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
} 

を追加するには、我々はGradleの2.2.0以降のバージョンを使用する場合、我々は、変更の上に追加する必要があるということです。それで、とても簡単です:)。

0

私は同様の問題に直面しました。

\res\layout\activity_main_lauch.xml

\res\layout-v21\activity_main_lauch.xml

私はので、それがエラーを投げていた、1つのファイルを修正しました:私は、リソースファイルに密接にチェックすると、私の活動のための2つのリソースファイルがありました。両方のファイルに変更を適用すると、作業が開始されました。

関連する問題