Package com.example.switchutils; Import Android.graphics.Color; Import Android.os.Bundle; Import android.support.v4.app.Fragment; Import android.support.v4.app.FragmentActivity; Import Android.support.v4.app.FragmentManager; Import android.support.v4.app.FragmentTransaction; Import Android.view.View; Import Android.view.View.OnClickListener; Import Android.view.Window; Import Android.widget.Button; public class Switchactivity extends Fragmentactivity { Private Button Btn_message,btn_call; Private Callfragment callfragment; Private Messagefragment messagefragment; public static final int message_fragment_type = 1; public static final int call_fragment_type = 2; public int currentfragmenttype =-1; @Override protected void OnCreate (Bundle savedinstancestate) { Super.oncreate (savedinstancestate); This.requestwindowfeature (Window.feature_no_title); Setcontentview (R.layout.activity_switch); Btn_message = (Button) Findviewbyid (r.id.btn_message); Btn_call = (Button) Findviewbyid (R.id.btn_call); Btn_message.setonclicklistener (Onclicker); Btn_call.setonclicklistener (Onclicker); Fragmentmanager Fragmentmanager = Getsupportfragmentmanager (); if (savedinstancestate! = null) { int type = Savedinstancestate.getint ("Currentfragmenttype"); Messagefragment = (messagefragment) fragmentmanager.findfragmentbytag ("message"); Callfragment = (callfragment) fragmentmanager.findfragmentbytag ("call"); if (Type > 0) Loadfragment (type); } else { Fragmenttransaction transaction = Fragmentmanager . BeginTransaction (); Fragment mainfragment = Fragmentmanager.findfragmentbytag ("message"); if (mainfragment! = null) { Transaction.replace (R.id.fl_content, mainfragment); Transaction.commit (); } else { Loadfragment (Message_fragment_type); } } } @Override protected void Onsaveinstancestate (Bundle outstate) { Super.onsaveinstancestate (outstate); Outstate.putint ("Lastfragmenttag", Currentfragmenttype); } private void switchfragment (int type) { Switch (type) { Case Message_fragment_type: Loadfragment (Message_fragment_type); Break Case Call_fragment_type: Loadfragment (Call_fragment_type); Break } } private void loadfragment (int type) { Fragmentmanager Fragmentmanager = Getsupportfragmentmanager (); Fragmenttransaction transaction = Fragmentmanager.begintransaction (); if (type = = Call_fragment_type) { if (callfragment = = null) { Callfragment = new Callfragment (); Transaction.add (R.id.fl_content, Callfragment, "Zhishi"); } else { Transaction.show (callfragment); } if (messagefragment! = null) { Transaction.hide (messagefragment); } Currentfragmenttype = Message_fragment_type; } else { if (messagefragment = = null) { Messagefragment = new Messagefragment (); Transaction.add (R.id.fl_content, Messagefragment, "Wenda"); } else { Transaction.show (messagefragment); } if (callfragment! = null) { Transaction.hide (callfragment); } Currentfragmenttype = Call_fragment_type; } Transaction.commitallowingstateloss (); } Private Onclicklistener Onclicker = new Onclicklistener () { @Override public void OnClick (View v) { Switch (V.getid ()) { Case R.id.btn_message: Btn_message.settextcolor (Color.parsecolor ("#df3031")); Btn_call.settextcolor (Color.White); Btn_message . Setbackgroundresource (r.drawable.baike_btn_pink_left_f_96); Btn_call . Setbackgroundresource (r.drawable.baike_btn_trans_right_f_96); Switchfragment (Message_fragment_type); Break Case R.id.btn_call: Btn_message.settextcolor (Color.White); Btn_call.settextcolor (Color.parsecolor ("#df3031")); Btn_message . Setbackgroundresource (r.drawable.baike_btn_trans_left_f_96); Btn_call . Setbackgroundresource (r.drawable.baike_btn_pink_right_f_96); Switchfragment (Call_fragment_type); Break } } }; } |