Activityベースクラスの詳細(5)-AppActivityのFragment機能のロード
4070 ワード
前言
AppActivity
の簡単な使用については、以前から詳しく説明してきましたが、Activityベースクラスの詳細(1)—前言Activityベースクラスの詳細(2)—アーキテクチャの概要Activityベースクラスの詳細(3)—AppActivityインフラストラクチャのActivityベースクラスの詳細(4)—AppActivityベースクラスの簡単な使用(4)—AppActivityベースクラスの詳細(4)—AppActivityベースクラスの簡単な使用(2)—アーキテクチャの概要Activityベースクラスの詳細(3)—AppActivityベースクラスの詳細(4)—AppActivityベースクラスの詳細具体的にお話しします.今日の知識点は次のとおりです.
一.AppActivityがfragmentをロードする際の主なポイント
Activity
fragment
をロードする場合、主に2つの問題に関連します.ここでは、
AppActivity
の論理がfragment
の論理に含まれているため、
の使用に重点を置きます.二.ActivityとFragmentの戻りキー処理の使用説明
には、動的な
がロードされており、このActivty
については、以下のようにFragment
を継承する必要がある.public class MainActivity extends AppActivity{
}
activity
が戻りキーを処理する必要がない場合、AppActivity
メソッドを書き換える必要はありません.このとき、MainActivity
が戻りキーをクリックすると、システムが戻りキーに応答する方法が実行される.onActivityKeyDown(int keyCode, KeyEvent event)
において戻りキーロジックの処理が必要である場合、MainActivity
のMainActivity
メソッドを書き換え、戻り値をtrueに設定する必要がある.public class MainActivity extends AppFragActivity{
//
//......
@Override
protected boolean onActivityKeyDown(int keyCode, KeyEvent event) {
// MianActivity
//......
// true,
return true;
}
}
AppActivity
でリターンキーロジックを処理すると、onActivityKeyDown(int keyCode, KeyEvent event)
はFragment
インタフェースを実現する必要があり、以下のようにする.public class FragmentB extends Fragment implements OnFragmentBackListener {
}
その後、
Fragment
のOnFragmentBackListener
にFragment
を割り当て、onAttach(Context context)
に傍受を設定し、Context
に傍受を解除し、onCreateView
の方法でonDestroyView()
インタフェースの戻りキーを以下のように処理する.//Fragment OnFragmentBackListener
public class FragmentB extends Fragment implements OnFragmentBackListener {
// Context
private Context mContext;
@Override
public void onAttach(Context context) {
super.onAttach(context);
// context
this.mContext = context;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mLayoutView = inflater.inflate(R.layout.fragment_b, container, false);
initView();
initData();
setListener();
return mLayoutView;
}
private void initView() {
}
private void initData() {
}
private void setListener() {
//
if (mContext instanceof MainActivity) {
((MainActivity) mContext).setOnFragmentBackListener(this);
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
//
if (mContext instanceof MainActivity) {
((MainActivity) mContext).setOnFragmentBackListener(null);
}
}
@Override
public void onBackForward(int keyCode, KeyEvent event) {
//fragment
//......
}
}
三.注意すべき問題
onBackForward(int keyCode, KeyEvent event)
がFragment
をロードする設計の目的は、AppActivity
が通常のライフサイクルで実行されることです.frgment
からfragment
へのジャンプは、activity
およびFragment
ではなく、add()
からshow()
の一連の方法であることを必ず確認してください.hide()
およびshow()
は、hide()
のライフサイクルを歩まないため、戻りキー機能が反応しないか、または「奇妙」なFragment
bug
からActivity
への値伝達は、上述した戻りキー処理に関する論理を参照することができる.OK、今日の内容はここまで紹介します.ありがとうございました.