java - Use view/layout of the base Fragment -
i have base fragment framelayout , want use layout in derived fragment , add ontouchlistener it.
basefragment.java
public class basefragment extends fragment { protected framelayout baseframelayout; protected view baseview; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { super.oncreateview(inflater, container, savedinstancestate); baseview = inflater.inflate(r.layout.fragment_base, container, false); baseframelayout = (framelayout) baseview.findviewbyid(r.id.framelayout); return baseview; } }
fragment_base.xml
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/framelayout" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />
derivedfragment.java
public class derivedfragment extends basefragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { super.oncreateview(inflater, container, savedinstancestate); baseframelayout.setontouchlistener(new view.ontouchlistener() { public boolean ontouch(view v, motionevent event) { // return true; } }); return baseview; } }
unfortunately ontouchlistener not executed when touch framelayout
edit:
finally add derivedfragment fragment in way:
overviewfragment.java
public class overviewfragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { super.oncreateview(inflater, container, savedinstancestate); view view = inflater.inflate(r.layout.fragment_overview, container, false); fragment derivedfragment = new derivedfragment(); fragmenttransaction devtrans = getchildfragmentmanager().begintransaction(); devtrans.add(r.id.derivedfragmentid, derivedfragment).commit(); fragment footerfragment = new footerfragment(); fragmenttransaction stattrans = getchildfragmentmanager().begintransaction(); stattrans.add(r.id.footerfragmentid, footerfragment).commit(); return view; } }
fragment_overview.xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <framelayout android:id="@+id/derivedfragmentid" android:layout_above="@+id/footerfragmentid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerinparent="true" android:layout_centervertical="true" android:gravity="center" /> <framelayout android:id="@+id/footerfragmentid" android:layout_alignparentbottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> </relativelayout>
i had never used empty layouts before. tested it.
with following lines layout not visible , not clicks:
<framelayout android:id="@+id/framelayout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
the following lines work:
<framelayout android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_height="match_parent" />
so either make layouts match_parent
or add views inside.
Comments
Post a Comment