尝试在空对象引用上调用虚拟方法'void android.support.v4.view.ViewPager.setOffscreenPageLimit(int)'

时间:2018-07-26 19:49:23

标签: java android

当我尝试运行我的应用程序时遇到此错误,我需要帮助。

这是错误说明:

  

由于: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>

谢谢

0 个答案:

没有答案