android - findFragmentById returns null -
i have activity navigation drawer , empty layout. on create of activity, display fragment(in empty layout of activity). fragment's id datevehiclemaincontent
. on selecting navigation items display other fragments. when pressed returns previous fragment.
i want display logout dialog when current fragment first fragment displayed(datevehiclemaincontent
). displayed when pressed every fragment. don't want displayed in other fragments occupy empty layout of activity. use findfragmentbyid
. maybe not working because display fragment in empty layout of activity
.
datetimepicker fragment class.
this activity
empty layout , onbackpressed()
check if current fragment fragment id datevehiclemaincontent
@override public void onbackpressed() { fragment currentfragment = getsupportfragmentmanager().findfragmentbyid(r.id.datevehiclemaincontent); if (currentfragment instanceof datetimepicker) { alertdialog.builder alertdialog = new alertdialog.builder(datevehiclepicker.this); alertdialog.settitle("logout"); // setting dialog message alertdialog.setmessage("do want logout?"); alertdialog.setpositivebutton("yes", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { sessionmanager.logoutuser(); } }); alertdialog.setnegativebutton("no", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { intent intent = new intent(getapplicationcontext(), mainactivity.class); intent.setflags(intent.flag_activity_clear_top); intent.putextra("exit", true); startactivity(intent); dialog.cancel(); } });alertdialog.show(); } else { super.onbackpressed(); } }
the activity's layout:
<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.prematixsofs.taxiapp.datevehiclepicker"> <!-- main content view --> <relativelayout android:id="@+id/maincontent" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- navigation drawer --> <relativelayout android:id="@+id/drawerpane" android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="start"> <!-- profile box --> <relativelayout android:id="@+id/profilebox" android:layout_width="match_parent" android:layout_height="100dp" android:background="#ff02c7c4" android:padding="8dp"> <imageview android:id="@+id/avatar" android:layout_width="50dp" android:layout_height="50dp" android:layout_margintop="15dp" android:src="@drawable/user" /> <linearlayout android:layout_width="wrap_content" android:layout_height="42dp" android:layout_centervertical="true" android:layout_marginleft="15dp" android:layout_torightof="@+id/avatar" android:orientation="vertical"> <textview android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:textcolor="#fff" android:textsize="16sp" android:textstyle="bold" /> <textview android:id="@+id/viewprofile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_margintop="4dp" android:text="view profile" android:textcolor="#fff" android:textsize="12sp" /> </linearlayout> </relativelayout> <!-- list of actions (pages) --> <listview android:id="@+id/navlist" android:layout_width="280dp" android:layout_height="match_parent" android:layout_below="@+id/profilebox" android:background="#ffffffff" android:choicemode="singlechoice" /> </relativelayout>
this part of fragment's layout ..when fragment displayed want show alert dialog logout:
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/datevehiclemaincontent" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.looper.loop.datetimepicker"> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/datevehiclelinearlayoutmaincontent" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
ok, lemme try this. isn't complete example, nor it's buildable because uses of custom code (classes) demonstrates approach well.
string title = getintent().getstringextra(extra_title); tag = getintent().getstringextra(extra_fragment_tag); filterfragment currentfragment = null; if (tag.equals(fragmentmywishlist.tag)) { currentfragment = (filterfragment) getsupportfragmentmanager().findfragmentbytag(fragmentmywishlist.tag); } else if (tag.equals(fragmentmylibrary.tag)) { currentfragment = (filterfragment) getsupportfragmentmanager().findfragmentbytag(fragmentmylibrary.tag); }
you may not have use getsupportfragmentmanager()
, can job done getfragmentmanager()
idea same. had use supportfragmentmanager because i'm using import android.support.v4.app.fragment;
edit:
fragmentmywishlist
has public static string tag = "fragmentmywishlist";
fragmentmylibrary
has public static string tag = "fragmentmylibrary";
Comments
Post a Comment