【问题标题】:Fragment Tabs and with different layouts片段选项卡和不同的布局
【发布时间】:2012-05-25 05:46:06
【问题描述】:

所以现在看来​​android中标签的标准是在FragmentActivity中使用一个tabhost,然后将每个标签作为Fragment。我在这里遇到的问题是,似乎具有相同 FragmentActivity(平板电脑或横向模式)的侧面片段或让一个 Fragment 使用第二个 Fragment 启动另一个 FragmentActivity(如果它是小型设备或旋转)的整个系统不会工作,因为您不能为每个选项卡设置 FragmentActivities。那么我如何实现在标签上放置 Fragments 的主要优势呢?

问候,

【问题讨论】:

    标签: android fragment screen-orientation


    【解决方案1】:

    是的,您可以为每个选项卡设置 fragmentActivity。

    这是 PagerAdapter 的示例:

    public class ExamplePagerAdapter extends FragmentPagerAdapter {
    
        public ExamplePagerAdapter(FragmentManager fm) {
            super(fm);
            // TODO Auto-generated constructor stub
        }
    
    
        @Override
        public int getCount() {
            return 3;
        }
    
        @Override
        public Fragment getItem(int position) {
            Fragment f = null;
            switch(position){
            case 0:
            {
            f = new ArrayListFragment();
            // set arguments here, if required
            Bundle args = new Bundle();
            f.setArguments(args);
            break;
            }
            case 1:
            {
                f = new PrincipalFragment();
                // set arguments here, if required
                Bundle args = new Bundle();
                f.setArguments(args);
                break;
            }
            case 2:
            {   
                f = new ViewFragment();
                // set arguments here, if required
                Bundle args = new Bundle();
                f.setArguments(args);
                break;
            }   
            default:
              throw new IllegalArgumentException("not this many fragments: " + position);
            }
    
    
            return f;
    
    
    }
    

    }

    您可以使用它来调用每个片段的每个活动。

    public class PrincipalFragment extends Fragment {
    
        private int mNum;
        private EditText et;
    
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mNum = getArguments() != null ? getArguments().getInt("num") : 1;
        }
    
        /**
         * The Fragment's UI is just a simple text view showing its
         * instance number.
         */
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.scrollview, container, false);
    
    
    
            ImageView i = (ImageView)v.findViewById(R.id.imageView1);
              ImageView i2 = (ImageView)v.findViewById(R.id.imageView2);
    
              ImageView i4 = (ImageView)v.findViewById(R.id.imageView4);
              ImageView i5 = (ImageView)v.findViewById(R.id.imageView5);
    
    
              ImageDownloader.Mode mode = ImageDownloader.Mode.CORRECT;
              ImageDownloader imageDownloader = new ImageDownloader();
              imageDownloader.download(URLnames.URLS[1], i);
              imageDownloader.download(URLnames.URLS[2], i2);
              imageDownloader.download(URLnames.URLS[3], i4);
              imageDownloader.download(URLnames.URLS[4], i5);
    
    
            return v;
    

    和上面的例子一样,我称之为布局滚动视图,所以当你要创建scrollview.xml时你需要指定细节。

    新建 > android xml 文件 > 选择布局类型 > 下一步 > 选择特定配置(您可以按密度、方向等使用...)> 完成。

    现在 eclipse 将为每个特定配置创建一个不同的文件夹,并在您运行不同的屏幕尺寸或 sdkversion 时自行管理。

    阅读Supporting Multiple Screens了解更多信息。

    不知道如何正确实现 tabscroll?访问这个答案:Actionbarsherlock + tabs + multi fragments?

    在片段活动中,您可以创建一个案例来选择屏幕方向或将其放入 AndroidManifest.xml。

    【讨论】:

    • 好的,谢谢,我明天需要检查一下...但是 activityFragments 在哪里,似乎这会使用 getItem() 方法返回片段,但我应该把它放在哪里?
    • 它会返回片段,只需阅读我的补充并给我答案。
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多