Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了按下后退按钮后的Android ViewPager异常大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ViewPager包含3个片段,工作正常.我从viewpager中的任何片段开始一个活动,并显示活动.之后当我按下后退按钮时,我的应用程序崩溃了以下例外情况:

@H_301_8@

@H_301_8@

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to resume activity {AppName.Activities/AppName.Activities.ViewPagerActivity}: java.lang.indexoutofboundsexception: Invalid index 2,size is 0
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
    at android.app.ActivityThread$H.handlemessage(ActivityThread.java:957)
    at android.os.Handler.dispatchmessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.indexoutofboundsexception: Invalid index 2,size is 0
    at java.util.ArrayList.throwindexoutofboundsexception(ArrayList.java:257)
    at java.util.ArrayList.set(ArrayList.java:484)
    at android.support.v4.app.FragmentStatePagerAdapter.destroyItem(FragmentStatePagerAdapter.java:97)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:415)
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:271)
    at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:244)
    at AppName.Activities.ViewPagerActivity.setUpView(ViewPagerActivity.java:36)
    at AppName.Activities.ViewPagerActivity.onStart(ViewPagerActivity.java:28)
    at android.app.instrumentation.callActivityOnStart(instrumentation.java:1129)
    at android.app.Activity.performStart(Activity.java:3791)
    at android.app.Activity.performRestart(Activity.java:3821)
    at android.app.Activity.performResume(Activity.java:3826)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)

以下是我的ViewPagerActivity代码,它扩展了FragmentActivity ::@H_301_8@

@H_301_8@

public class ViewPagerActivity extends FragmentActivity
{
    private ViewPager mViewPager;
    private ViewPagerAdapter adapter;
    Boolean flag = false;

    @Override
    protected void onCreate(Bundle arg0)
    {
        super.onCreate(arg0);
        setContentView(R.layout.view_pager);
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        setUpView();
    }

    private void setUpView()
    {
        mViewPager = (ViewPager) findViewById(R.id.viewPager);
        adapter = new ViewPagerAdapter(getApplicationContext(),getSupportFragmentManager());
        mViewPager.setAdapter(adapter);
        mViewPager.setCurrentItem(0);
    }

    @Override
    public Boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu,menu);
        return true;
    }

    @Override
    public Boolean onOptionsItemSELEcted(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.setTings:
                startActivity(new Intent(this,AppSetTingsActivity.class));
                return true;
            case R.id.addSituationMenu:
                Intent i = new Intent(this,MainLayout.class);
                i.putExtra("parentActivity","SplashScreenLayout");
                startActivity(i);
                return true;
            case R.id.historyActivity:
                startActivity(new Intent(this,HistoryActivity.class));
                return true;
            case R.id.chartActivity:
                startActivity(new Intent(this,ViewPagerActivity.class));
                return true;
            default:
                return super.onOptionsItemSELEcted(item);
        }
    }

}

行mViewPager.setCurrentItem(0);导致崩溃.@H_301_8@

这是ViewPagerAdapter代码:@H_301_8@

@H_301_8@

public class ViewPagerAdapter extends FragmentStatePagerAdapter
{
    private final Context context;
    ArrayList<ArrayList<Object>> data;
    int @R_80_10586@lMoodEntries = 0;
    static Fragment f = null;

    public ViewPagerAdapter(Context mcontext,FragmentManager fm)
    {
        super(fm);
        context = mcontext;
    }

    @Override
    public Fragment getItem(int position)
    {
        switch (position)
        {
            case 0:
            {
                f = new ChartFragment(context,@R_80_10586@lMoodEntries,data);
                break;
            }
            case 1:
            {
                f = new ViewRecordsFragment(context,data);
                break;
            }
            case 2:
            {
                f = new LearnMoreFragment(context);
                break;
            }
        }
        return f;
    }

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

@L_197_17@

你能尝试在onCreate()方法中移动以下行:

@H_301_8@

@H_301_8@ @H_602_7@mViewPager = (ViewPager) findViewById(R.id.viewPager); adapter = new ViewPagerAdapter(getApplicationContext(),getSupportFragmentManager()); mViewPager.setAdapter(adapter);

大佬总结

以上是大佬教程为你收集整理的按下后退按钮后的Android ViewPager异常全部内容,希望文章能够帮你解决按下后退按钮后的Android ViewPager异常所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。