【发布时间】:2017-03-11 17:05:51
【问题描述】:
我正在尝试调用我的片段的一些方法,但问题是我使用的是 Infinite ViewPager 而不是普通的 ViewPager。我尝试了以下方式来调用片段方法。
- 我无法在 Infinite ViewPager 片段中设置 id。
- 我无法在 java 中使用片段标签。
- 我尝试了 getItem 方法,但它导致崩溃.error
致命异常:主要 进程:beatbox.neelay.dialogtest2,PID:28997 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' 在beatbox.neelay.dialogtest2.Songdata.getPlayList(Songdata.java:26) 在beatbox.neelay.dialogtest2.Songs.dataretrive(Songs.java:56) 在beatbox.neelay.dialogtest2.MainActivity.onFragmentInteraction(MainActivity.java:134) 在beatbox.neelay.dialogtest2.BlankFragment.onButtonPressed(BlankFragment.java:70) 在beatbox.neelay.dialogtest2.BlankFragment$2.onClick(BlankFragment.java:60) 在 android.view.View.performClick(View.java:5207) 在 android.view.View$PerformClick.run(View.java:21177) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5441) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
InfiniteViewPager 的另一个问题是,如果用户继续像螺旋一样滑动它,位置就会不一样。 这就是我调用 InfiniteViewPager 的方式
private InfiniteViewPager pager = null;
private MyAdapter adapter;
private InfinitePagerAdapter myAdapter;
pager = (InfiniteViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
adapter = new MyAdapter(fragmentManager);
myAdapter = new InfinitePagerAdapter(adapter);
pager.setAdapter(myAdapter);
我试过这种方式来调用方法
int pos = pager.getCurrentItem();
Fragment activeFragment = adapter.getItem(pos);
if(pos == 2){
((Songs)activeFragment).dataretrive();
((Songs)activeFragment).dataset();
}
任何如何调用该方法的提示都会有所帮助。
【问题讨论】:
-
您的 sharedPreference 为空。
标签: android android-fragments android-viewpager