可滑动视图空异常错误 - Android Studio

当尝试运行应用程序并在视图之间滑动时,应用程序崩溃并出现空对象引用错误。我已经仔细检查了我的 getItem 方法以确保它可以处理这个问题,但应用程序仍然崩溃。该应用程序可以正常运行第一个视图,但在尝试滑动到第二个和第三个视图时崩溃。


如果有人能澄清错误是什么,将不胜感激。


我还在代码下方包含了错误日志。


public class MainActivity extends AppCompatActivity {


private SectionsPagerAdapter mSectionsPagerAdapter;

private ViewPager mViewPager;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);

    // Create the adapter that will return a fragment for each of the three

    // primary sections of the activity.

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());


    // Set up the ViewPager with the sections adapter.

    mViewPager = (ViewPager) findViewById(R.id.container);

    mViewPager.setAdapter(mSectionsPagerAdapter);


    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();

        }

    });


}



@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;

}



这是错误日志;


java.lang.NullPointerException:尝试在 android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:394 的空对象引用上调用虚拟方法'java.lang.Class java.lang.Object.getClass()' ) 在 android.support.v4.view.ViewPager 的 android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:104) 的 android.support.v4.app.BackStackRecord.add(BackStackRecord.java:389)。 addNewItem(ViewPager.java:1002) 在 android.support.v4.view。ViewPager.populate(ViewPager.java:1216) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1084) 在 

犯罪嫌疑人X
浏览 85回答 1
1回答

明月笑刀无情

问题出在这段代码中:@Overridepublic Fragment getItem(int position) {    //returning the current tabs    switch (position){        case 0:            Tab1 tab1 = new Tab1();            return tab1;        case 1:            Tab2 tab2 = new Tab2();            return tab2;        case 3:            Tab3 tab3 = new Tab3();            return tab3;        default:            return null;    }}具体来说,这一行:case 3:这应该是case 2相反的。因为它是现在,您将返回null从default你的第三个页面的情况。顺便说一句,我建议改变你处理这种情况的方式。null我认为您应该这样做,而不是从默认情况下返回:case default:    throw new IllegalArgumentException("unexpected position: " + position);如果你有这个而不是return null,你的错误会更加明显。你会看到的IllegalArgumentException:意外位置:2这将帮助您意识到case 3.一般来说,当你的程序在不应该出现的地方时,你应该总是抛出异常而不是返回一些默认值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java