【问题标题】:android release error Avoid non_default construtor in fragmentsandroid发布错误避免片段中的非默认构造函数
【发布时间】:2015-08-27 12:06:52
【问题描述】:

当我发布我的项目时,我遇到了这个错误:

错误:避免在片段中使用非默认构造函数:使用默认构造函数加上Fragment#setArguments(Bundle) 而不是[ValidFragment]

请帮帮我,这是我的代码

public class Main2 extends Activity implements ActionBar.TabListener {

   @Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getApplicationContext(),getFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

   mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);

            }


        });

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {

            actionBar.addTab(
                    actionBar.newTab()
                            .setIcon(mSectionsPagerAdapter.getDrawableId(i))
                            .setTabListener(this));
        }
    }

    @Override
     public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
          mViewPager.setCurrentItem(tab.getPosition());

}

public class SectionsPagerAdapter extends FragmentPagerAdapter {

 @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    return new Z_Hello(mcontext);
                case 1:
                    return new X_Board(mcontext);
                case 2:
                    return new X_Board_2(mcontext);
                case 3:
                    return new X_Board3(mcontext);
            }
            return null;
        }
}

和片段

public class X_Board extends Fragment{

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

return view

}

所以我试试

   (fragment)
  public static X_Board newInstance(int h){

    X_Board ff = new X_Board(context);
     Bundle args = new Bundle();
     args.putInt("num",h);
     ff.setArguments(args);

    return ff;
 }

    (activity)
    Fragment fragment = X_Board.newInstance(1);
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.pager, fragment);
    ft.addToBackStack(null);
    ft.commit();

    (fragment oncreate)
   mNum = getArguments() !=null ? getArguments().getInt("num") : 1;

但仍然显示错误..

请帮助我,我找到所有问题,但没有解决它帮助我..

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    您所做的不是调用片段的正确方法。相反,您应该使用:

        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction ft = manager.beginTransaction();
        ft.replace(R.id.your_fragment_container, new YourGotoFragment());
        ft.commit();
    

    【讨论】:

    • 感谢您的回复,我在哪里插入该代码?而 R.id.container 是什么?你的意思是android.R.id.content?
    • 它应该是父视图的id,在你的情况下它似乎是R.id.pager
    • container 是 Activity 的 xml 文件中片段容器的 ID。
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2023-03-20
    相关资源
    最近更新 更多