本文主要給大家介紹了關于Android中你可能不知道的Fragment妙用的相關內容,分享出來供大家參考學習,下面來一起看看吧。
先來看看效果圖

在軟件開發中登陸功能是十分常見重要的,就以此為例說明android/216284.html">fragment的一種用法,讓開發變得更自如
1.這個用法的原因和意義
2.先看看用法
在任何需要登陸的地方調用我們在Utils中寫的一個靜態方法
一次寫好從此輕松調用
ActivityUtils.startLogin(this, new ActivityUtils.ActivityResultListner() { @Override public void loginsuccess() { ((Button)v).setText("您已登陸"); } @Override public void logincancel() { Toast.makeText(MainActivity.this,"您已取消登陸",0).show(); } });3.實現的方式
//用abstract class我們在不需要cancel回掉時可以不重寫 public abstract static class ActivityResultListner { public void loginsuccess() { } public void logincancel() { } }2.先定義一個fragment用于處理回調
public static class MyFragment extends Fragment { public static final int LOGIN = 123; ActivityResultListner listener; public void setListener(ActivityResultListner listener) { this.listener = listener; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == LOGIN) { if (resultCode == RESULT_OK) { if (listener != null) listener.loginsuccess(); } else { if (listener != null) listener.logincancel(); } } }1、回調的實現
2、傳進的Context 要是FragmentActivity的子類
實際中
AppcomatActivity Fragment.getActivity()都是滿足這個要求的
3、先把frament添加到activity
4、根據fragment的onActivityResult獲取回調
public static void startLogin(FragmentActivity context, ActivityResultListner listener) { //先看activity是否添加過該fragment, 添加根據Tag找出 ,沒有就添加 FragmentManager manager = context.getSupportFragmentManager(); MyFragment myFragment = null; Fragment loginf = manager.findFragmentByTag(MyFragment.LOGIN + ""); if (loginf == null) { myFragment = new MyFragment(); manager.beginTransaction().add(myFragment, MyFragment.LOGIN + "").commit(); //這句是讓commit立即生效,不然運行會報錯,fragment還沒有被attach manager.executePendingTransactions(); } else { myFragment = (MyFragment) loginf; } //設置監聽 myFragment.setListener(listener); Intent intent = new Intent(context, loginActivity.class); myFragment.startActivityForResult(intent, MyFragment.LOGIN); }源碼下載:
github:https://github.com/While1true/---Fragment-
4.總結
利用了fragment和activity相同的生命周期,用同樣的方法可以做很多事情,比如申請權限等
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答