這篇文章給大家介紹Fragment在Android應用中的作用有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
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);
}關于Fragment在Android應用中的作用有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。