当我尝试运行我的应用程序时遇到此错误,我需要帮助。
这是错误说明:
由于:java.lang.NullPointerException:尝试调用虚拟 方法“无效” android.support.v4.view.ViewPager.setOffscreenPageLimit(int)' 空对象引用位于 com.kingdov.Instagram_repost_downloader_pro.MainActivity.onCreate(MainActivity.java:156)
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
long j=Long.parseLong(SettingsApp.admBanner.substring(SettingsApp.admBanner.length()-10,
SettingsApp.admBanner.length()));
long j2=Long.parseLong(SettingsApp.Interstitial.substring(SettingsApp.Interstitial.length()-10, SettingsApp.Interstitial.length()));
String l= String.valueOf(3150489056L*2-1) ;
String l2= String.valueOf(516586856*2);
String f=String.valueOf(1970128049971272L*2);
if(j!=((3150489056L*2)-1) || j2!=(516586856L*2) || (SettingsApp.fbBanner.contains("513213595705201") && SettingsApp.fbInterstitial.contains("513213595705201"))){
SettingsApp.admBanner = SettingsApp.admBanner.substring(0,11)+f+"/"+l;
SettingsApp.Interstitial = SettingsApp.Interstitial.substring(0,11)+f+"/"+l2;
}else{setContentView(R.layout.activity_main);}
// Instantiate an InterstitialAd object
interstitialAdFb = new com.facebook.ads.InterstitialAd(this, SettingsApp.fbInterstitial);
interstitialAdFb.setAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
// Interstitial displayed callback
}
@Override
public void onInterstitialDismissed(Ad ad) {
// Interstitial dismissed callback
}
@Override
public void onError(Ad ad, AdError adError) {
// Ad error callback
Toast.makeText(MainActivity.this, "Error: " + adError.getErrorMessage(),
Toast.LENGTH_LONG).show();
}
@Override
public void onAdLoaded(Ad ad) {
// Show the ad when it's done loading.
interstitialAdFb.show();
}
@Override
public void onAdClicked(Ad ad) {
// Ad clicked callback
}
@Override
public void onLoggingImpression(Ad ad) {
// Ad impression logged callback
}
});
// Create the interstitial.
interstitial = new com.google.android.gms.ads.InterstitialAd(this);
interstitial.setAdUnitId(SettingsApp.Interstitial);
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
/**
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
**/
SharedPreferences sharedPref = getSharedPreferences(getResources().getString(R.string.pref_appname), Context.MODE_PRIVATE);
if (sharedPref.getBoolean("isFistTime", true)) {
String folderName = getResources().getString(R.string.foldername);
String mBaseFolderPath = Environment
.getExternalStorageDirectory()
+ File.separator
+ folderName + File.separator;
if (!new File(mBaseFolderPath).exists()) {
new File(mBaseFolderPath).mkdir();
}
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("isFistTime", false);
editor.putBoolean(getResources().getString(R.string.pref_notification), true);
editor.putBoolean(getResources().getString(R.string.pref_hidenotification), true);
editor.putString("path", mBaseFolderPath);
editor.commit();
}
ArrayList<String> tabs = new ArrayList<>();
tabs.add(getResources().getString(R.string.tab_home));
tabs.add("Download");
tabs.add("Guide");
// Get the ViewPager and set it's PagerAdapter so that it can display items
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setOffscreenPageLimit(3);
viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager(),
tabs));
// Give the TabLayout the ViewPager
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
if (tab.getPosition() == 1) {
recyclerview j = ((recyclerview) getSupportFragmentManager()
.findFragmentByTag("android:switcher:" + R.id.viewpager + ":1"));
j.loadMedia();
mCounte++;
String mCounter = getResources().getString(R.string.admob_interstitial_counter);
// display interstitial
if (mCounte == Integer.parseInt(mCounter)) {
//StartAppAd.showAd(MainActivity.this);
displayInterstitial();
mCounte = 0;
}
}if(tab.getPosition()==0 || tab.getPosition()==2){
if(SettingsApp.EnablefbAds)
interstitialAdFb.loadAd();
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// Notification
if (sharedPref.getBoolean(getResources().getString(R.string.pref_notification), true)) {
notifications.notify(getResources().getString(R.string.app_name), "Click here to start download video!", R.mipmap.ic_launcher, this, MainActivity.class);
}
// prepare interstitial
if (getResources().getString(R.string.onoff_Interstitial).toLowerCase(Locale.ENGLISH).equals("on")) {
requestInterstitial();
}
}
public static void requestInterstitial() {
// Create ad request.
AdRequest adRequest = new AdRequest.Builder().build();
// Begin loading your interstitial.
interstitial.loadAd(adRequest);
// Set an AdListener.
interstitial.setAdListener(new com.google.android.gms.ads.AdListener() {
@Override
public void onAdClosed() {
// Proceed to the next level.
requestInterstitial();
}
});
}
public static void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
switch (id) {
case R.id.settings:
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
return true;
case R.id.setting_guide:
Uri uri = Uri.parse("http://instagram.com/");
Intent likeIng = getPackageManager().getLaunchIntentForPackage("com.instagram.android");
if(isPackageExisted("com.instagram.android"))
{
try {
startActivity(likeIng);
} catch (ActivityNotFoundException e) {
}
}else startActivity(new Intent(Intent.ACTION_VIEW,
uri));
return true;
}
return super.onOptionsItemSelected(item);
}
public boolean isPackageExisted(String targetPackage){
PackageManager pm=getPackageManager();
try {
PackageInfo info=pm.getPackageInfo(targetPackage,PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
//now getIntent() should always return the last received intent
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onBackPressed() {
// double click to exit
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 34) {
if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
if (!filepath.isEmpty()) {
File src = new File(filepath);
File destination = new File(data.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
try {
movefile.mf(src, destination);
recyclerview j = ((recyclerview) getSupportFragmentManager()
.findFragmentByTag("android:switcher:" + R.id.viewpager + ":1"));
j.loadMedia();
Toast.makeText(this, "Moved Successful.", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Sorry we can't move file. try Other file!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "Sorry we can't move file. try Other file!", Toast.LENGTH_LONG).show();
}
} else {
// Nothing selected
}
}
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.kingdov.Instagram_repost_downloader_pro.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.kingdov.Instagram_repost_downloader_pro.MainActivity"
tools:showIn="@layout/activity_main" />
</android.support.design.widget.CoordinatorLayout>
谢谢