【问题标题】:How to create display multiple layouts in onCreateView method如何在 onCreateView 方法中创建显示多个布局
【发布时间】:2016-12-05 04:23:20
【问题描述】:

我正在尝试使用片段和ViewPager 创建一个介绍滑块屏幕。我想在onCreateView 方法中显示多个布局但不知道该怎么做。

有什么帮助吗?

主要活动

public class MainActivity extends AppCompatActivity {
    public ViewPager pager;
    public The_fragment_adapter the_fragment_adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pager = (ViewPager) findViewById(R.id.pager);
        the_fragment_adapter = new The_fragment_adapter(getSupportFragmentManager());
        pager.setAdapter(the_fragment_adapter);
    }
}

片段类

public class The_fragment extends Fragment {

    public The_fragment(){
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View my_view=inflater.inflate(R.layout.theui,container,false);
        return my_view;
    }
}

适配器视图

public class The_fragment_adapter extends FragmentStatePagerAdapter {

    public int[] the_layouts = {R.layout.page1,R.layout.page2};

    public The_fragment_adapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return new The_fragment();
    }

    @Override
    public int getCount() {
        return the_layouts.length;
    }
}

【问题讨论】:

  • 多重布局是什么意思?
  • 现在,在 onCreateView 方法中只显示一个布局,即 theui,但我想显示 2 个不同的布局并制作这两个布局的滑块。

标签: android android-layout android-fragments android-viewpager


【解决方案1】:

ViewPager 用于分页多个片段,而不是布局。 getItem() 方法应该为你想要的位置返回你想要的片段。

使用您想要的布局创建第二个片段:

public Fragment The_second_fragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View my_view=inflater.inflate(R.layout.page2,container,false);
        return my_view;
    }
}

然后更改您的适配器方法:

@Override
public Fragment getItem(int position) {
    switch 0:
        return new The_fragment();
    switch 1:
        return new The_second_fragment();
}

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

见优秀的tutorial in the Android Developer's Guide。而且,将来如果您关注Java naming conventions,您更有可能获得更好的答案,因为其他程序员将能够更轻松地理解您的代码。

【讨论】:

  • 非常感谢。好吧,已经完成了。现在我只想在使用它们后杀死那些碎片。我正在尝试使用finish();方法,但这不起作用。
  • 您不需要手动杀死碎片。当您的活动被销毁时,它们将被杀死。
  • 我尝试放置另一个活动并通过第二个片段上的按钮访问它。当我在该活动上并按下后退按钮时,它会将我带回片段
  • 很高兴您让多个片段正常工作!我希望您可以使用其中一种解决方案in this answer 来解决您的第二个问题。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2021-07-30
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
相关资源
最近更新 更多