如何将LinearLayout设置为包含在其他类的片段中的滚动视图?

时间:2014-08-29 07:16:03

标签: android android-fragments android-view fragmentstatepageradapter

让我们说以下是我的片段。

public class FieldsFragment extends Fragment {

    LinearLayout linearLayout;
    ScrollView scrollView;
    ViewGroup rootView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = (ViewGroup) inflater.inflate(
                   R.layout.single_field_fragment ,null);
        scrollView = (ScrollView) rootView.findViewById(R.id.single_field_scrollView);
        return rootView;
    }

    public void setLinearLayout(LinearLayout linearLayout){
        scrollView.removeAllViews();
        scrollView.addView(linearLayout);
    }

    public LinearLayout getLinearLayout(){
        return linearLayout;
    }

}

我想做的是......

ArrayList<FieldsFragment> fragmentList = new ArrayList<FieldsFragment>();
fragment = new FieldsFragment();
fragment.setLinearLayout(lL);
fragmentList.add(fragment);

只是想将我的线性布局解析为来自其他活动的片段,以便在FragmentStatePagerAdapter中使用...

问题是我不能在不启动scrollView(findViewByID)的情况下setLinearLayout(myLayout1)。

我的工作流程非常简单...... (1)从服务器拉出linearLayout .. (2)将它们设置为每个FieldsFragment并将它们添加到ArrayList (3)并使用该ArrayList放入FragmentStatePagerAdapter。 目的是滑动从服务器获得的所有线性布局。

1 个答案:

答案 0 :(得分:0)

我得到了一个解决方案,而且非常简单。 以下是我将linearlayout放入片段的方式,它可以工作。

public class MyFragment extends Fragment {

ScrollView scrollView;
private LinearLayout linearLayout;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(
           R.layout.my_fragment , container, false);
    scrollView = (ScrollView) rootView.findViewById(R.id.svMyFragment);
    scrollView.addView(linearLayout);
    return rootView;
}

public static final MyFragment newInstance(LinearLayout linear_Layout){
    MyFragment myfragment = new MyFragment();
    myfragment.setLinearLayout(linear_Layout);
    return myfragment; 
}

public void setLinearLayout(LinearLayout linearLayout) {
    this.linearLayout = linearLayout;
}

}

在FragmentActivity类中,像这样实例化

        MyFragment fooFragment = MyFragment.newInstance(myLinearLayout);