cari

Rumah  >  Soal Jawab  >  teks badan

java - Pelbagai antara muka dengan susun atur yang sama?

Andaikan saya mempunyai 5 aktiviti berbeza, tetapi susun atur dan fungsi di bahagian bawah 5 aktiviti adalah sama (susun atur lain adalah berbeza, seperti toolBar saya ingin bertanya bagaimana untuk membuat susun atur yang sama ini hanya ditulis di pangkalan). Aktiviti kelas dan kemudian Aktiviti lain mewarisi BaseActivity ini, dengan itu hanya menulis kod di satu tempat tanpa menulis kod yang sama dalam aktiviti lain.
ps: Jika kaedah ini tidak dapat dicapai, adakah kaedah lain?

ringa_leeringa_lee2716 hari yang lalu1113

membalas semua(3)saya akan balas

  • 習慣沉默

    習慣沉默2017-06-20 10:08:35

    Anda boleh membaca artikel ini dan melihat apa yang telah dilakukan oleh orang lain, saya harap ia akan memberi inspirasi kepada anda: http://www.jianshu.com/p/5bab...

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-06-20 10:08:35

    /q/10...
    Soalan anda ini sama seperti di atas.

    balas
    0
  • 某草草

    某草草2017-06-20 10:08:35

    Mula-mula kita mentakrifkan pembolehubah Boolean untuk mengawal sama ada bahagian biasa dipaparkan, dan tambah kaedah seperti berikut:

     private boolean isShowCommonView = true;
    
      public void setShowCommonView(boolean isShow) {
            isShowCommonView = isShow;
        }

    Kemudian kami mengatasi setContentView dalam BaseActivity: seperti berikut

     @Override
        public void setContentView(@LayoutRes int layoutResID) {
            super.setContentView(layoutResID);
            if (isShowBottom) {
                ViewGroup mDecorView = (ViewGroup) getWindow().getDecorView();
                //获得DecorView视图层次中的FrameLayout
                //这个地方不清楚的可以看一下Activity的视图层次图就明白了
                mContentRootView = (FrameLayout) ((ViewGroup) mDecorView.getChildAt(0)).getChildAt(1);
                mBottomView = LayoutInflater.from(getBaseContext()).inflate(R.layout.ac_main_play_view, null);
                FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
                layoutParams.gravity = Gravity.BOTTOM;
                mContentRootView.addView(mBottomView, layoutParams);
               //下面就是根据mBottomView.findViewById()来进行一些视图的初始化工作
               //如设置监听器等 
            }
        }

    Akhir sekali, dalam onCreate() subkelas lain yang mewarisi BaseActivity, kita mesti memanggil kaedah setShowCommonView (Boolean) yang ditakrifkan pada permulaan sebelum super.onCreate() untuk mengawal sama ada bahagian biasa dipaparkan. Seperti berikut

    //子类的生命周期函数:onCreate(Bundle)
     @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            //显示底部视图 true为显示 false 为隐藏
            setShowBottom(true);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_mainplay);
            ButterKnife.bind(this);
            initview();
            //其他的工作。。。
        }

    balas
    0
  • Batalbalas