BaseActivity與BaseFragment的簡單封裝
在android開發中activity與fragment是每個專案最基本的類,所以對它們二者的封裝也是非常有必要的,今天就把這兩個類簡單的封裝一下。
1、activity的封裝
public abstract class BaseActivity extends AppCompatActivity implements OnClickListener{ @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { // 設定全屏 this.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState, persistentState); setContentView(setLayout()); setView(); setData(); } /** * 繫結佈局 * @return */ protected abstract int setLayout(); /** * 初始化元件 */ protected abstract void setView(); /** * 設定資料等邏輯程式碼 */ protected abstract void setData(); /** * 簡化findViewById() * @param resId * @param* @return */ protected T fvbi(int resId){ return (T) findViewById(resId); } /** * Intent跳轉 * @param context * @param clazz */ protected void toClass(Context context,Class extends BaseActivity> clazz){ toClass(context,clazz,null); } /** * Intent帶值跳轉 * @param context * @param clazz * @param bundle */ protected void toClass(Context context, Class extends BaseActivity> clazz, Bundle bundle){ Intent intent = new Intent(context,clazz); intent.putExtras(bundle); startActivity(intent); } /** * 帶返回值的跳轉 * @param context * @param clazz * @param bundle * @param reuqestCode */ protected void toClass(Context context,Class extends BaseActivity> clazz,Bundle bundle,int reuqestCode){ Intent intent = new Intent(context,clazz); intent.putExtras(bundle); startActivityForResult(intent,reuqestCode); } }
在activity中的onCreate()方法,findviewbyid()方法,以及一些跳轉傳值等,這些都是經常要用到的,所以把這些方法都封裝在一起,用的時候能少寫一些重複的程式碼。
2、fragment的封裝 , fragment的封裝與activity類似
public abstract class BaseFragment extends Fragment implements OnClickListener{ protected Context mContext; /** * 當fragment與activity發生關聯時呼叫 * @param context 與之相關聯的activity */ @Override public void onAttach(Context context) { super.onAttach(context); mContext = context; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(setLayout(),null); return view; } /** * 繫結佈局 * @return */ protected abstract int setLayout(); @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initView(); } /** * 初始化元件 */ protected abstract void initView(); @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(); } /** * 設定資料等邏輯程式碼 */ protected abstract void initData(); /** * 簡化findViewById * @param resId * @param* @return */ protected T fvbi(int resId){ return (T) getView().findViewById(resId); } /** * intent跳轉 * @param context * @param clazz */ protected void toClass(Context context,Class extends BaseActivity> clazz){ toClass(context,clazz,null); } /** * intent帶值跳轉 * @param context * @param clazz * @param bundle */ protected void toClass(Context context,Class extends BaseActivity> clazz,Bundle bundle){ Intent intent = new Intent(context,clazz); intent.putExtras(bundle); context.startActivity(intent); } /** * 帶返回值的跳轉 * @param context * @param clazz * @param bundle * @param requestCode */ protected void toClass(Context context,Class extends BaseActivity> clazz,Bundle bundle,int requestCode){ Intent intent = new Intent(context,clazz); intent.putExtras(bundle); getActivity().startActivityForResult(intent,requestCode); } }
3、BaseActivity的使用
public class NextActivity extends BaseActivity{ private TextView mTextView; @Override protected int setLayout() { return R.layout.activity_main; } @Override protected void setView() { mTextView = fvbi(R.id.tv); mTextView.setOnClickListener(this); } @Override protected void setData() { mTextView.setText("who are you"); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv: toClass(NextActivity.this, MainActivity.class); break; } } }
4、BaseFragment的使用
public class TestFragment extends BaseFragment { private TextView mTextView; @Override protected int setLayout() { return R.layout.activity_main; } @Override protected void initView() { mTextView = fvbi(R.id.tv); mTextView.setOnClickListener(this); } @Override protected void initData() { mTextView.setText("fragment"); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv: toClass(mContext,MainActivity.class); break; } } }
上述的封裝,只是一些簡單的封裝,如果在專案中有一些其他的功能,幾乎是每個activity或fragment都會用到的話,就把它封裝在這兩個類裡。在剛學習的時候對於老師所講的封裝難以理解,即使知道了封裝的好處,也不知道該如何入手自己封裝,跟著老師封裝幾個,再多看看其他專案裡的或是其他大神封裝的例子之後,自己也就勉強可以封裝幾個簡單的類了。所謂熟讀唐詩三百首,不會作詩也會吟,多看看,多想想,見的多了,自然會有所體會。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2806116/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android談談封裝那些事--BaseActivity和BaseFragment(-)Android封裝Fragment
- Android 談談封裝那些事 –BaseActivity 和 BaseFragment(二)Android封裝Fragment
- Android 談談封裝那些事 --BaseActivity 和 BaseFragment(二)Android封裝Fragment
- Retrofit的簡單封裝封裝
- IQueryable的簡單封裝封裝
- ProgressFragment的簡單封裝Fragment封裝
- Flutter Dio http簡單封裝與使用FlutterHTTP封裝
- Kotlin中Retrofit與RxJava的簡單封裝KotlinRxJava封裝
- 一個簡單的 Amqp 封裝MQ封裝
- Fetch API 簡單封裝API封裝
- 二維碼簡單封裝封裝
- Golang 對MongoDB的操作簡單封裝GolangMongoDB封裝
- JS棧結構的簡單封裝JS封裝
- 陣列常用方法的簡單封裝陣列封裝
- AndroidBroadcast做的簡單封裝:AndroidAST封裝
- 一個封裝簡單使用簡單的雷達檢視封裝
- BaseActivity中封裝通用的Toolbar封裝
- 5-AVI–Fragment簡單封裝Fragment封裝
- iOS 基於FMDB簡單封裝iOS封裝
- 對getElementsByTagName()方法簡單封裝封裝
- 簡單問題,封裝和框架!封裝框架
- 簡單封裝get和jsonp封裝JSON
- 封裝一個簡單的日曆元件封裝元件
- 封裝一個簡單的動畫函式封裝動畫函式
- c# Quartz.net的簡單封裝C#quartz封裝
- 一個最簡單的類JQuery封裝jQuery封裝
- 微信小程式wx.request的簡單封裝微信小程式封裝
- javascript物件導向的封裝簡單介紹JavaScript物件封裝
- SqlSugar 多資料來源的簡單封裝SqlSugar封裝
- 單元測試與封裝5.1封裝
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- 我自己封裝的 Laravel 融雲 sdk,簡單好用封裝Laravel
- python-對requests請求簡單的封裝Python封裝
- web自動化框架—BasePage 類的簡單封裝Web框架封裝
- MongoDB Python官方驅動 PyMongo 的簡單封裝MongoDBPython封裝
- 把redux封裝起來,更加簡單方便的使用Redux封裝
- 小程式wx.request()方法簡單封裝封裝
- 簡單封裝分頁功能pageView.js封裝ViewJS