android - viewpager fragment 中出现 stackoverflow 错误

标签 android android-fragments android-viewpager

我正在开发一个 Android 应用程序。我已经附加了 8 个 fragment 和一个用于滑动的 viewpager。它可以工作,但是当滑动 stackoverflow 错误时出现。以下是我的fragmentactivity。

public class HomeScreen extends FragmentActivity {

public InsuranceFragmentAdapter mAdapter;
private ViewPager mPager;

public String value;
public PageIndicator mIndicator;
public static int cPosition = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.themed_circles);

    mAdapter = new InsuranceFragmentAdapter(getSupportFragmentManager(),
            HomeScreen.this);

    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

    mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    // mIndicator.setCurrentItem(2);

    mIndicator
            .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {


                @Override
                public void onPageSelected(int position) {

                }

                @Override
                public void onPageScrolled(int position,
                        float positionOffset, int positionOffsetPixels) {

                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });


}

}

我的适配器类如下

public class InsuranceFragmentAdapter extends FragmentPagerAdapter {
Context contx;


public InsuranceFragmentAdapter(FragmentManager fm, Context ctx) {

    super(fm);
    this.contx = ctx;


}

@Override
public Fragment getItem(int position) {
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentPolicyListing.class.getName());
        break;
    case 1:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentBasicPersonal.class.getName());
        break;


    case 2:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentationNomineeDetails.class.getName());
        break;
    case 3:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentFamilyHistory.class.getName());
        break;

    case 4:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentPolicyDetails.class.getName());
        break;

    case 5:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentFemale.class.getName());
        break;
    case 6:
        fragment = Fragment.instantiate(contx, com.lic.fragments.Fragmentmedical.class.getName());
        break;
    case 7:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentCheckList.class.getName());
        break;
    }

    return fragment;
}

@Override
public int getCount() {
    // Show 3 total pages.
    return 8;
}

// @Override
// public CharSequence getPageTitle(int position) {
// return TestFragmentAdapter.CONTENT[position % CONTENT.length];
// }

// @Override
// public int getIconResId(int index) {
// return ICONS[index % ICONS.length];
// }

public void setCount(int count) {
    // if (count > 0 && count <= 10) {
    // mCount = count;
    // notifyDataSetChanged();
    // }
}

}

我的 fragment 类之一如下

public class FragmentationNomineeDetails extends Fragment {


private String nominNameStr;
private String nomindobStr;
private String nominageStr;
private String nominrelationshipStr;
private EditText nomini_name_et;
private TextView nomi_dob_tv;
private EditText nomi_age_et;
private EditText nomi_relationship_et;
private View layout;

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

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
 layout = inflater.inflate(R.layout.fragment_nomination_details,
            container, false);
    Button save = (Button) layout.findViewById(R.id.save);
    nomini_name_et = (EditText) layout
            .findViewById(R.id.nomini_name_et);
    nomi_dob_tv = (TextView) layout.findViewById(R.id.nomi_dob_tv);
    nomi_age_et = (EditText) layout.findViewById(R.id.nomi_age_et);
    nomi_relationship_et = (EditText) layout.findViewById(R.id.nomi_relationship_et);
    setlistener();


    return layout;
}


@Override
public void onDestroyView() {
    // TODO Auto-generated method stub
    super.onDestroyView();
    layout=null;
}
}

它正在工作。我可以滑动到任何 fragment ,但滑动 4 或 5 次后就会出现 stackoverflow 错误。 下面是我的 logcat。

02-21 14:45:02.817: E/AndroidRuntime(24463): FATAL EXCEPTION: main
02-21 14:45:02.817: E/AndroidRuntime(24463): java.lang.StackOverflowError
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.Editor.drawHardwareAccelerated(Editor.java:1664)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.Editor.onDraw(Editor.java:1563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.TextView.onDraw(TextView.java:5974)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14853)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.FrameLayout.draw(FrameLayout.java:467)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.ScrollView.draw(ScrollView.java:2276)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13739)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.support.v4.view.ViewPager.draw(ViewPager.java:2157)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)    
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13739)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.widget.FrameLayout.draw(FrameLayout.java:467)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14856)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13744)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.drawChild(ViewGroup.java:3316)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13739)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.getDisplayList(View.java:13786)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at android.view.View.draw(View.java:14563)
02-21 14:45:02.817: E/AndroidRuntime(24463):    at       android.view.ViewGroup.drawChild(ViewGroup.java:3316)

我正在发布我的一个 fragment xml 文件。请查看并告诉我任何问题。

<?xml version="1.0" encoding="utf-8"?>

<com.lic.helper.CommonHeader
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</com.lic.helper.CommonHeader>
 <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:background="@color/gray_bg_container"
    android:padding="1dp" >

    <RelativeLayout
        android:id="@+id/relatve_top"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/gray_top_round_background"
        android:padding="8dp" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:text="Nomination Details"
            android:textColor="@color/white" />
    </RelativeLayout>




     <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relatve_top"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/bottom_rounded_white_layout" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_margin="10dip"
            android:layout_marginTop="0dp"
            android:background="#F8F8F8"
            android:orientation="vertical" >



            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#F1F0EE"
                android:gravity="center"
                android:orientation="horizontal"
                android:weightSum="10" >

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2.5"
                    android:padding="5dp"
                    android:src="@drawable/ic_name" />

                <EditText
                    android:id="@+id/nomini_name_et"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="7.5"
                    android:background="#fff"
                    android:hint="Nominees Name"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:textColor="#000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:background="#F1F0EE"
                android:gravity="center"
                android:orientation="horizontal"
                android:weightSum="10" >

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2.5"
                    android:padding="5dp"
                    android:src="@drawable/ic_name" />

                <TextView
                    style="@android:style/Widget.EditText"
                    android:id="@+id/nomi_dob_tv"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="7.5"
                    android:background="#fff"
                    android:hint="Date of Birth"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:textColor="#000" 
                    android:clickable="true"/>
            </LinearLayout>





            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:background="#F1F0EE"
                android:gravity="center"
                android:orientation="horizontal"
                android:weightSum="10" >

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2.5"
                    android:padding="5dp"
                    android:src="@drawable/ic_location" />

                <EditText
                    android:id="@+id/nomi_age_et"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="7.5"
                    android:background="#fff"
                    android:hint="Age"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:textColor="#000" />
            </LinearLayout>

             <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:background="#F1F0EE"
                android:gravity="center"
                android:orientation="horizontal"
                android:weightSum="10" >

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2.5"
                    android:padding="5dp"
                    android:src="@drawable/ic_location" />

                <EditText
                    android:id="@+id/nomi_relationship_et"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="7.5"
                    android:background="#fff"
                    android:hint="Relationship"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:textColor="#000" />
            </LinearLayout>





















            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp" >

                <Button
                    android:id="@+id/save"
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:layout_alignParentBottom="true"
                    android:layout_marginBottom="12dp"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:padding="8dp"
                    android:layout_marginTop="5dp"
                    android:background="@drawable/rounded_orange_button_bg"
                    android:text="@string/save"
                    android:textColor="#fff" />
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>







    </RelativeLayout>
</LinearLayout>

最佳答案

更换一下试试

layout = inflater.inflate(R.layout.fragment_nomination_details,
        container, false);

layout = inflater.inflate(R.layout.fragment_nomination_details,
        null, false);

关于android - viewpager fragment 中出现 stackoverflow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21930217/

相关文章:

android - 在 fragment 之间滑动左/右动画

java - 横向上的 TabLayout 不显示 gravity_fill 和 mode_fixed

android - 如何在 View pager 的 PagerTitleStrip 中设置标题

android - 想在 Android 中使用 Python 库

android - 不幸的是项目已停止-错误

java - 从 PHP/MySQL 到 Java/JSON

android - 如何退出 fragment 并从工具栏项返回到上一个 Activity 或 fragment

android - 替换抽屉导航中的 fragment View 的问题

Android 应用无法构建

android - 在 Kotlin 中禁用 Viewpager 的 View Pager 滑动