gpt4 book ai didi

java - ViewPagerAdapter 显示空值

转载 作者:行者123 更新时间:2023-11-30 02:10:16 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现 Material Design 中的滑动选项卡。找了个教程,照着做了代码。我做了一些更改以在我的应用程序上实现。现在我得到一个 NullPointerException 并且无法找出原因。

这是我遵循的教程

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

我的代码

public class Dashboard extends Fragment {

ViewPager pager;
ViewPagerAdpater adapter;
SlidingTabLayout tabs;
CharSequence Titles[]={"Songs","Videos","Featured","Radio","Playlist","Artists"};
int Numboftabs =6;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.activity_slide,container,false);

adapter = new ViewPagerAdpater(getParentFragment().getFragmentManager(),Titles,Numboftabs);


// Assigning ViewPager View and setting the adapter
pager = (ViewPager) getView().findViewById(R.id.pager);
pager.setAdapter(adapter);

// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) getView().findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width

// Setting Custom Color for the Scroll bar indicator of the Tab View
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.tabsScrollColor);
}
});

// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(pager);

return view;
}
}

这里我得到一个空指针异常

adapter =  new ViewPagerAdpater(getParentFragment().getFragmentManager(),Titles,Numboftabs);

ViewPagerADapter

public class ViewPagerAdpater extends FragmentStatePagerAdapter {

CharSequence Titles[]; // This will Store the Titles of the Tabs which are Going to be passed when ViewPagerAdapter is created
int NumbOfTabs; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created


// Build a Constructor and assign the passed Values to appropriate values in the class
public ViewPagerAdpater(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) {
super(fm);

this.Titles = mTitles;
this.NumbOfTabs = mNumbOfTabsumb;

}



//This method return the fragment for the every position in the View Pager
@Override
public Fragment getItem(int position) {

if(position == 0) // if the position is 0 we are returning the First tab
{
SongsFragment tab1 = new SongsFragment();
return tab1;
}
else if(position == 1) // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab
{
ArtistsFragment tab2 = new ArtistsFragment();
return tab2;
}
else{

Dashboard tab3 = new Dashboard();
return tab3;
}

}

// This method return the titles for the Tabs in the Tab Strip

@Override
public CharSequence getPageTitle(int position) {
return Titles[position];
}

// This method return the Number of tabs for the tabs Strip

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

主要 Activity

public class MainActivity extends ActionBarActivity
implements NavigationDrawerCallbacks {

/**
* Fragment managing the behaviors, interactions and presentation of the navigation drawer.
*/
private NavigationDrawerFragment mNavigationDrawerFragment;
private Toolbar mToolbar;
public static FragmentManager fragmentManager;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
fragmentManager = getSupportFragmentManager();

mNavigationDrawerFragment = (NavigationDrawerFragment)
getFragmentManager().findFragmentById(R.id.fragment_drawer);

// Set up the drawer.
mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);


}

@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
// Toast.makeText(this, "Menu item selected -> " + position, Toast.LENGTH_SHORT).show();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, new Dashboard()).commit();
}


@Override
public void onBackPressed() {
if (mNavigationDrawerFragment.isDrawerOpen())
mNavigationDrawerFragment.closeDrawer();
else
super.onBackPressed();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
return super.onCreateOptionsMenu(menu);
}


@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
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}


}

LOGCAT

Process: com.example.crytal.etunesdev, PID: 7698
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.crytal.etunesdev/com.example.crytal.etunesdev.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.crytal.etunesdev.Dashboard.onCreateView(Dashboard.java:28)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1177)
at android.app.Activity.performStart(Activity.java:5551)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5653)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)

最佳答案

在实例化 ViewPagerAdpater 时摆脱 getParentFragment()。 fragment 的父级是 Activity,当您处理嵌套 fragment 时,getParentFragment() 返回一些东西 != null

还有,

pager = (ViewPager) getView().findViewById(R.id.pager);

getView() 返回结果 onCreateView,因此您不能在 onCreateView 中使用它。使用膨胀 View (在您的情况下为 view)调用 findViewById

关于java - ViewPagerAdapter 显示空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com