<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                BaseFragment的TitleBar封裝如下 ~~~ public class BaseFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("fragment:onCreateView", getView()); return null; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Log.d("fragment:onCreateView", getView()); findViewById(); } private ViewSwitcher[] titleSwitcher; /** * 初始化View */ protected void findViewById() { titleSwitcher = new ViewSwitcher[3]; titleSwitcher[0] = (ViewSwitcher) findViewById(R.id.app_title_left_switcher); titleSwitcher[1] = (ViewSwitcher) findViewById(R.id.app_title_middle_switcher); titleSwitcher[2] = (ViewSwitcher) findViewById(R.id.app_title_right_switcher); } protected void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) { TitleRes[] reses = new TitleRes[] { leftTitle, middleTitle, rightTitle }; for (int i = 0; i < reses.length; i++) { TitleRes res = reses[i]; ViewSwitcher switcher = titleSwitcher[i]; if (res == null) { switcher.setVisibility(View.INVISIBLE); } else { switcher.setVisibility(View.VISIBLE); // 觸發單擊事件的View View clickView = null; // 文字 if (res.getType() == 0) { switcher.setDisplayedChild(0);// 顯示TextView // Object resource = res.getResource(); String title = resource instanceof Integer ? getResources().getString((Integer) resource) : String.valueOf(resource); ((TextView) switcher.getChildAt(0)).setText(title); clickView = switcher.getChildAt(0); } else { switcher.setDisplayedChild(1);// 顯示ImageView // int imageResource = (Integer) res.getResource(); ((ImageView) switcher.getChildAt(1)).setImageResource(imageResource); clickView = switcher.getChildAt(1); } // 設置title的單擊事件 clickView.setOnClickListener(res.getClickListener()); } } } protected View findViewById(int id) { return getView().findViewById(id); } } ~~~ 子類調用 ~~~ public class HomeFragment extends BaseFragment implements View.OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.home, container, false); super.onCreateView(inflater, container, savedInstanceState); return layout; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); findViewById(R.id.home_title_sample).setOnClickListener(this); TitleRes left = null; TitleRes middle = new TitleRes("首頁標題"); TitleRes right = null; setTitle(left, middle, right); } ~~~ 可以發現跟BaseActivity 中的代碼實現基本上是類似的 但是BaseActivity和BaseFragment又沒有共同的父類 ?這個時候需要采用 組合的方式進行代碼重構 ~~~ /** * 因為Fragment和Activity沒有共同的父類 ,但是他們各自的父類里又有一些TitleBar相同的業務邏輯處理<br> * 所以我創建了該類 * * @author coffee <br> * 2015-12-24 下午10:26:10 */ public class TitleMgr { /** * TitleBar的上下文 */ private Context context; /** * TitleBar所在的頂層View容易 */ private View contentView; /** * 三個Title */ private ViewSwitcher[] titleSwitcher; public TitleMgr(Context context, View contenView) { this.context = context; this.contentView = contenView; } private Resources getResources() { return context.getResources(); } private View findViewById(int id) { return contentView.findViewById(id); } /** * 初始化title bar */ public void findViewById() { titleSwitcher = new ViewSwitcher[3]; titleSwitcher[0] = (ViewSwitcher) findViewById(R.id.app_title_left_switcher); titleSwitcher[1] = (ViewSwitcher) findViewById(R.id.app_title_middle_switcher); titleSwitcher[2] = (ViewSwitcher) findViewById(R.id.app_title_right_switcher); } public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) { TitleRes[] reses = new TitleRes[] { leftTitle, middleTitle, rightTitle }; for (int i = 0; i < reses.length; i++) { TitleRes res = reses[i]; ViewSwitcher switcher = titleSwitcher[i]; if (res == null) { switcher.setVisibility(View.INVISIBLE); } else { switcher.setVisibility(View.VISIBLE); // 觸發單擊事件的View View clickView = null; // 文字 if (res.getType() == 0) { switcher.setDisplayedChild(0);// 顯示TextView // Object resource = res.getResource(); String title = resource instanceof Integer ? getResources().getString((Integer) resource) : String.valueOf(resource); ((TextView) switcher.getChildAt(0)).setText(title); clickView = switcher.getChildAt(0); } else { switcher.setDisplayedChild(1);// 顯示ImageView // int imageResource = (Integer) res.getResource(); ((ImageView) switcher.getChildAt(1)).setImageResource(imageResource); clickView = switcher.getChildAt(1); } // 設置title的單擊事件 clickView.setOnClickListener(res.getClickListener()); } } } } ~~~ ~~~ public class BaseFragment extends Fragment { private TitleMgr titleMgr; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("fragment:onCreateView", getView()); return null; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Log.d("fragment:onCreateView", getView()); // titleMgr = new TitleMgr(getActivity(), getView()); titleMgr.findViewById(); } protected void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) { titleMgr.setTitle(leftTitle, middleTitle, rightTitle); } ~~~ ~~~ public abstract class BaseActivity extends Activity { private TitleMgr titleMgr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMgr.push(this); findViewById(); } /** * 初始化View */ protected void findViewById() { titleMgr = new TitleMgr(getContext(), findViewById(android.R.id.content)); titleMgr.findViewById(); } protected void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) { titleMgr.setTitle(leftTitle, middleTitle, rightTitle); } ~~~ 我把業務邏輯抽出來放在單獨寫好的TitleMgr類中,然后BaseActivity和BaseFragment采用組合?也算是代理模式實現吧
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看