NullPointer-Ausnahme auf setAdapter für Viewpager

In einem Bildschirm, ich bin mit zwei viewPagers - eine für Bild autoscroling und andere Tasten für Bildlauf. Bild den automatischen Bildlauf arbeiten war absolut in Ordnung, aber wenn ich fügte hinzu, die Umsetzung für die Tasten auf der viewPager, meine Anwendung gestartet, Absturz für nullpointer auf setAdapter, ich bin mit fragmentPagerAdapter.
Für Bilder autoslider ich bin mit diesem Referenz code
https://github.com/JakeWharton/Android-ViewPagerIndicator

Hier ist mein source code

layout-xml-Datei simple_circles.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- android:layout_weight="0.01" -->

    <SearchView
        android:id="@+id/search_view"
        android:layout_width="fill_parent"
        android:layout_height="80dp" >
    </SearchView>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="400dp">
    </android.support.v4.view.ViewPager>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager_for_buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >       

    </android.support.v4.view.ViewPager>

fragment für das hinzufügen von Tasten auf der slider -

    public class ScreenSlidePageFragment extends Fragment {

    public static final String ARG_PAGE = "page";


    private int mPageNumber;


    public static Fragment create(int pageNumber) {
        ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, pageNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public ScreenSlidePageFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mPageNumber = getArguments().getInt(ARG_PAGE);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
         //Inflate the layout containing a title and body text.
        Button music_button = new Button(getActivity());
        music_button.setText("Music");

        Button news_button = new Button(getActivity());
        news_button.setText("News");

        Button videos_button = new Button(getActivity());
        videos_button.setText("Videos");
        Button photos_button = new Button(getActivity());
        photos_button.setText("Photos");
        LinearLayout layout = new LinearLayout(getActivity());
        layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        //layout.setGravity(Gravity.CENTER);
        layout.addView(music_button);
        layout.addView(news_button);
        layout.addView(videos_button);
        layout.addView(photos_button);

        return layout;



    }


    public int getPageNumber() {
        return mPageNumber;
    }
}

Activity-Klasse und adapter für viewPager -

public class SampleCirclesDefault extends FragmentActivity {

    //Initialization

    TestFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;
    Bitmap bitmap;
    ArrayList<String> bandImagesList;
    ImageView build_bandapp_img;
    boolean pagerMoved;
    Runnable Update;
    Handler h;
    long ANIM_VIEWPAGER_DELAY;
    Handler handler;
    int NUM_PAGES = 5;
    ViewPager buttonPager;
    ScreenSlidePagerAdapter buttonAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //No action bar
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
            **setContentView(R.layout.simple_circles);**
        build_bandapp_img = (ImageView) findViewById(R.id.imageView_for_webview);
        build_bandapp_img.setOnClickListener(new OnClickListener() {
            //Build bandapp button
            @Override
            public void onClick(View v) {

                Intent i = new Intent(SampleCirclesDefault.this,
                        BandDetailedActivity.class);
                startActivity(i);
            }
        });

        mAdapter = new TestFragmentAdapter(getSupportFragmentManager());//adapter
                                                                        //for
                                                                        //viewpager

        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        buttonAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        //buttonAdapter = new AdapterForFragmentOfButtonSlider(getSupportFragmentManager());
        buttonPager = (ViewPager)findViewById(R.id.pager_for_buttons);
        buttonPager.setAdapter(buttonAdapter); //***error -NullPointerException***//

        mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);//dot dot indicator
        buttonPager.setCurrentItem(1); 
        handler = new Handler();
        //autoscrolling of view pager
        Update = new Runnable() {

            int currentPage = mPager.getCurrentItem();

            public void run() {
                if (currentPage == NUM_PAGES - 1) {
                    currentPage = 0;
                }
                mPager.setCurrentItem(currentPage++, true);
            }
        };

        Timer swipeTimer = new Timer();
        swipeTimer.schedule(new TimerTask() {

            @Override
            public void run() {
                handler.post(Update);
            }
        }, 100, 5000);

    }

     private class ScreenSlidePagerAdapter extends FragmentPagerAdapter {
            public ScreenSlidePagerAdapter(FragmentManager fragmentManager) {
                super(fragmentManager);
            }

            @Override
            public Fragment getItem(int position) {
                return ScreenSlidePageFragment.create(position);
            }

            @Override
            public int getCount() {
                return NUM_PAGES;
            }
        }
    }

Stack-trace

01-23 13:56:57.067: W/dalvikvm(18861): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
01-23 13:56:57.098: E/AndroidRuntime(18861): FATAL EXCEPTION: main
01-23 13:56:57.098: E/AndroidRuntime(18861): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.viewpagerindicator.sample/com.viewpagerindicator.sample.SampleCirclesDefault}: java.lang.NullPointerException
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.os.Looper.loop(Looper.java:137)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread.main(ActivityThread.java:5041)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at java.lang.reflect.Method.invokeNative(Native Method)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at java.lang.reflect.Method.invoke(Method.java:511)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at dalvik.system.NativeStart.main(Native Method)
01-23 13:56:57.098: E/AndroidRuntime(18861): Caused by: java.lang.NullPointerException
01-23 13:56:57.098: E/AndroidRuntime(18861):    at com.viewpagerindicator.sample.SampleCirclesDefault.onCreate(SampleCirclesDefault.java:85)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.Activity.performCreate(Activity.java:5104)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-23 13:56:57.098: E/AndroidRuntime(18861):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-23 13:56:57.098: E/AndroidRuntime(18861):    ... 11 more
01-23 13:57:13.356: I/Process(18861): Sending signal. PID: 18861 SIG: 9

Habe ich darauf wo genau ich bin immer Fehler.

Mir bitte helfen diesen Fehler zu beheben, vielen Dank im Voraus.

  • Entweder Ihr buttonPageroder buttonAdapternull ist, ich denke, Ihr buttonAdapternull ist. Werden Sie sicher, dass es instanziiert ist richtig.
  • ja ich fühle auch dasselbe, aber ich nicht herausfinden, wo das problem ist, aber ich vergeudete einen ganzen Tag in diesem und coldnt finden, was falsch ist
  • wo ist setContentView für Aktivität
  • Nein, buttonAdapter null würde nicht zu einer NPE an dieser bestimmten Linie, sondern irgendwo im inneren des setAdapter Methode. buttonPager ist die einzige Sache, die null sein kann, auf diese Linie.
  • könnte eine compilation Problem, oder eine layout-* Problem. Ist dieses layout die einzige version, die Sie haben ? haben, reinigen Sie Ihr Projekt ?
  • auch das layout gepostet der nicht eine Bildansicht und die id referenziert zu sein scheint das richtige für buttonPager.
  • überprüfen Sie die buttonAdapter und buttonPager für null. ich denke immer noch, buttonAdapter sollte null sein, weil buttonPager ist im gleichen layout, mit anderen, und buttonPager darf nicht null sein. Aber immer noch auf null prüfen ersten.
  • op hat buttonAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager())
  • wenn die adapter waren null, die Ausnahme würde nicht auftreten, bei dieser speziellen Zeile, sondern in der setAdapter Methode.
  • ja, es war, weil von verschiedenen layout-Dateien-danke für die Hilfe
  • Beantworten Sie die Frage so, dass ich mark es richtig

InformationsquelleAutor user3153020 | 2014-01-23
Schreibe einen Kommentar