2017-09-15 59 views
0

我在這段代碼中得到一個空指針異常,但我無法跟蹤它的源。正常異常提供有關哪些活動正在生成它的細節,但它是不同的。它發生在一些設備只要。我在互聯網上搜索了例外,但沒有發現有用的東西。我將不勝感激任何幫助。謝謝奇怪的空指針異常與未知的來源

public class MainActivity extends AppCompatActivity { 
    Button capture; 
    ImageView iv; 
    private Fragment fragment; 
    private FragmentManager fragmentManager; 
    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 
    ViewPagerAdapter adapter; 
    private AdView mAdView; 
    public static BadgeView badge; 
    /*private FirebaseRemoteConfig mFirebaseRemoteConfig; 
    public static int remote_counter;*/ 
    public static int counter; 
    public static final String PREFS = "Badge"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_icon_text_tabs); 
     mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder()//.addTestDevice("8224D21A28DA92B60EB105E7FD793AF4") 
       .build(); 
     mAdView.loadAd(adRequest); 
     mAdView.setAdListener(new AdListener() { 
      @Override 
      public void onAdClosed() { 
       super.onAdClosed(); 
      } 

      @Override 
      public void onAdLoaded() { 
       super.onAdLoaded(); 
       mAdView.setVisibility(View.VISIBLE); 
      } 
     }); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     viewPager.setOffscreenPageLimit(3); 
     setupViewPager(viewPager); 
     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
     setupTabIcons(); 

    } 
    private void setupTabIcons() { 
     TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
     tabOne.setText("Facebook"); 
     tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.fb, 0, 0); 
     tabLayout.getTabAt(0).setCustomView(tabOne); 

     TextView tabTwo = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
     tabTwo.setText("Videos"); 
     tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.videos, 0, 0); 
     tabLayout.getTabAt(1).setCustomView(tabTwo); 

     TextView tabThree = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
     tabThree.setText("Downloads"); 
     tabThree.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.downloading, 0, 0); 
     tabLayout.getTabAt(2).setCustomView(tabThree); 

     SharedPreferences settings = getSharedPreferences(PREFS, MODE_PRIVATE); 
     int temp = settings.getInt("badge_counter", 0); 

     View target = tabLayout.getTabAt(2).getCustomView(); 
     badge = new BadgeView(this, target); 
     badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT); 
     // badge.setText(String.valueOf(temp)); 
     badge.setBadgeMargin(3, 0); 
     //badge.show(); 
    // 
     if (temp > 0) { 
      badge.setText(String.valueOf(temp)); 
      badge.show(); 
     } 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFrag(new Facebook_Fragment(), "Facebook"); 
     adapter.addFrag(new Downloads_Fragment(), "Videos"); 
     adapter.addFrag(new Current_Downlaod(), "Downloads"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFrag(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

     if (grantResults.length > 0 && ActivityCompat.checkSelfPermission(MainActivity.this, permissions[0]) == PackageManager.PERMISSION_GRANTED) { 

      Toast.makeText(MainActivity.this, "Permission granted", Toast.LENGTH_SHORT).show(); 

      ((Downloads_Fragment) adapter.getItem(1)).updateDownloads(); 
     } else { 
      Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show(); 

     } 
    } 

    @Override 
    public void onPause() { 
     if (mAdView != null) { 
      mAdView.pause(); 
     } 
     super.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     if (mAdView != null) { 
      mAdView.destroy(); 
     } 
     super.onDestroy(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (mAdView != null) { 
      mAdView.resume(); 
     } 
    } 
} 

我在一些設備上得到這個異常。它在我測試自己的android kitkat和果凍豆上完美地工作。但我收到關於棒棒糖,棉花糖,牛軋糖的崩潰報告。

java.lang.NullPointerException: 
    at com.kpsd.activity.c.<init>(Unknown Source:0) 
    at com.kpsd.a.b$1.run(Unknown Source:0) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5451) 
    at java.lang.reflect.Method.invoke(Native Method:0) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+2

可能重複[什麼是NullPointerException,以及如何解決它?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-fix -it) – Fildor

+0

你確定這個活動正在進行中嗎? –

+0

我只有兩個活動,這一個和另一個,但另一個只播放視頻,所以我認爲問題在這裏。 –

回答

0

我能夠知道NPE的起源,現在,除了被proguarded我使用this在線工具可追溯性。並做了。謝謝大家的指導。