Rumah > Soal Jawab > teks badan
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?
習慣沉默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...
某草草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();
//其他的工作。。。
}