如何重用其他片段类常见的片段看法? [英] How to reuse common fragment views in other fragment class?
本文介绍了如何重用其他片段类常见的片段看法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在碎裂类创建的GridView的菜单,也是我创建了一个单独Common_Fragment类,这是包含两个ImageView的。现在我想重新使用我的碎裂类和其他碎片的Common_Fragment意见。我怎样才能做到这一点?
\r
\r\r
\r 我的碎裂类\r
\r
公共类碎裂扩展片段{\r
\r
公共碎裂(){\r
//必需的空公共构造\r
}\r
\r
@覆盖\r
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,\r
捆绑savedInstanceState){\r
//充气的布局该片段\r
查看查看= inflater.inflate(R.layout.fragment_a,集装箱,FALSE);\r
\r
CommonFragment片段=新CommonFragment();\r
FragmentManager经理= getFragmentManager();\r
FragmentTransaction交易= manager.beginTransaction();\r
transaction.add(R.id.dynamicFragmentLayout,片段);\r
器transaction.commit();\r
。getFragmentManager()调用BeginTransaction()取代(R.id.dynamicFragmentLayout,新片段())提交()。\r
\r
\r
\r
返回视图。\r
}\r
\r
}
\r
\r
\r\r
\r Common_Fragment类\r
\r
公共类CommonFragment扩展片段{\r
ImageView的imageView1,imageview2;\r
\r
@覆盖\r
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,\r
捆绑savedInstanceState){\r
\r
查看查看= inflater.inflate(R.layout.common_fragment,\r
集装箱,FALSE);\r
\r
imageView1 =(ImageView的)view.findViewById(R.id.imageView1);\r
imageView2 =(ImageView的)view.findViewById(R.id.imageView2);\r
\r
\r
返回视图。\r
\r
}\r
}
\r
\r
\r\r
\r fragment_a.xml\r
\r
< XML版本=1.0编码=UTF-8&GT?;\r
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android\r
机器人:ID =@ + ID / dynamicFragmentLayout\r
机器人:layout_width =FILL_PARENT\r
机器人:layout_height =FILL_PARENT\r
机器人:比重=中心\r
机器人:方向=垂直\r
机器人:layout_marginTop =20dp>\r
\r
< GridView控件\r
机器人:ID =@ + ID / gridView1\r
机器人:layout_width =match_parent\r
机器人:layout_height =match_parent\r
机器人:columnWidth时=90dp\r
机器人:比重=中心\r
机器人:horizontalSpacing =10dp\r
机器人:为numColumns =auto_fit\r
机器人:stretchMode =columnWidth时\r
机器人:verticalSpacing =10dp/>\r
\r
< / LinearLayout中>
\r
\r
\r\r
\r common_fragment.xml\r
\r
< XML版本=1.0编码=UTF-8&GT?;\r
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android\r
机器人:layout_width =FILL_PARENT\r
机器人:layout_height =FILL_PARENT\r
机器人:背景=@机器人:彩色/白\r
机器人:方向=垂直\r
机器人:ID =@ + ID / dynamicFragmentLayout>\r
\r
< RelativeLayout的\r
机器人:ID =@ + ID / relativeLayout1\r
机器人:layout_width =FILL_PARENT\r
机器人:layout_height =WRAP_CONTENT\r
机器人:背景=@机器人:彩色/黑白\r
>\r
\r
<的ImageButton\r
机器人:ID =@ + ID /按钮1\r
机器人:layout_width =WRAP_CONTENT\r
机器人:layout_height =WRAP_CONTENT\r
机器人:layout_alignParentLeft =真\r
机器人:背景=@绘制/ ic_launcher/>\r
\r
<的ImageButton\r
机器人:ID =@ + ID /按钮2\r
机器人:layout_width =WRAP_CONTENT\r
机器人:layout_height =WRAP_CONTENT\r
机器人:layout_alignParentRight =真\r
机器人:背景=@绘制/ ic_launcher/>\r
< / RelativeLayout的>\r
\r
< / LinearLayout中>
\r
我以前在这FragmentB code
\r
\r\r
\r 这是我FragmentB类\r
\r
公共类FragmentB扩展片段{\r
\r
公共FragmentB(){\r
//必需的空公共构造\r
}\r
\r
@覆盖\r
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,\r
捆绑savedInstanceState){\r
//充气的布局该片段\r
返回inflater.inflate(R.layout.fragment_b,集装箱,FALSE);\r
\r
CommonFragment片段=新CommonFragment();\r
FragmentManager经理= getFragmentManager();\r
FragmentTransaction交易= manager.beginTransaction();\r
transaction.add(R.id.dynamicFragmentLayout,片段);\r
器transaction.commit();\r
。getFragmentManager()调用BeginTransaction()取代(R.id.container,新CommonFragment())提交()。\r
}\r
\r
}
\r
解决方案
在碎裂
的布局XML创建一个容器并加载 common_fragment
成碎裂
。
在fragment_a.xml
<的FrameLayout
机器人:ID =@ + ID /容器
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT>< /&的FrameLayout GT;
< GridView控件
机器人:ID =@ + ID / gridView1
机器人:layout_width =match_parent
机器人:layout_height =match_parent
.........
/>
在FragmentA.java
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
//充气的布局该片段
查看查看= inflater.inflate(R.layout.fragment_a,集装箱,FALSE);
//添加片段
。getChildFragmentManager()调用BeginTransaction()增加(新CommonFragment(),R.id.container).commit()。
//你的code。
}
I created a GridView menu in my FragmentA class and also I created a separate Common_Fragment class which is contain two ImageView. Now I want to reuse those Common_Fragment views in my FragmentA class and other Fragment. How can I do this?
My FragmentA class
public class FragmentA extends Fragment {
public FragmentA() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_a, container, false);
CommonFragment fragment = new CommonFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.dynamicFragmentLayout, fragment);
transaction.commit();
getFragmentManager().beginTransaction().replace(R.id.dynamicFragmentLayout, new Fragment()).commit();
return view;
}
}
Common_Fragment Class
public class CommonFragment extends Fragment {
ImageView imageView1,imageview2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.common_fragment,
container, false);
imageView1 = (ImageView) view.findViewById(R.id.imageView1);
imageView2 = (ImageView) view.findViewById(R.id.imageView2);
return view;
}
}
fragment_a.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dynamicFragmentLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_marginTop="20dp" >
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</LinearLayout>
common_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical"
android:id="@+id/dynamicFragmentLayout" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/black"
>
<ImageButton
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@drawable/ic_launcher" />
<ImageButton
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@drawable/ic_launcher" />
</RelativeLayout>
</LinearLayout>
I used this code in FragmentB
This is my FragmentB Class
public class FragmentB extends Fragment {
public FragmentB() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_b, container, false);
CommonFragment fragment = new CommonFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.dynamicFragmentLayout, fragment);
transaction.commit();
getFragmentManager().beginTransaction().replace(R.id.container,new CommonFragment()).commit();
}
}
解决方案
Create a container in the layout xml of FragmentA
and load the common_fragment
into that FragmentA
.
In fragment_a.xml
<FrameLayout
android:id="@+id/container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></FrameLayout>
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
.........
/>
In the FragmentA.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_a, container, false);
//Add the fragment
getChildFragmentManager().beginTransaction().add(new CommonFragment(),R.id.container).commit();
//Your code.
}
这篇关于如何重用其他片段类常见的片段看法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文