如何重用其他片段类常见的片段看法? [英] How to reuse common fragment views in other fragment class?

查看:156
本文介绍了如何重用其他片段类常见的片段看法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在碎裂类创建的GridView的菜单,也是我创建了一个单独Common_Fragment类,这是包含两个ImageView的。现在我想重新使用我的碎裂类和其他碎片的Common_Fragment意见。我怎样才能做到这一点?

\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:机器人=htt​​p://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
        机器人:horizo​​ntalSpacing =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:机器人=htt​​p://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

\r
\r

我以前在这FragmentB code

\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

\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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆