編輯:關於Android編程
接上一篇的博文:Android fragment 切換加載數據卡頓問題,想到的辦法就是把切換之前的fragmenthide隱藏起來,就可以解決卡頓的問題,不用重新new一個fragment。由於左側懸浮菜單有差不多10多個菜單,如果每一個菜單切換的時候,都要隱藏其余所有的菜單,那就會導致代碼十分的臃腫,以前隱藏的代碼是這樣的:
/*if (!openPositionFragment.isAdded()) { // 先判斷是否被add過 transaction.hide(priceFragment) .add(R.id.fragment_container, openPositionFragment) .commit(); // 隱藏當前的fragment,add下一個到Activity中 titleView.setText(openPositionFragment.getFragmentTitle()); } else { transaction.hide(priceFragment).show(openPositionFragment) .commit(); // 隱藏當前的fragment,顯示下一個 titleView.setText(openPositionFragment.getFragmentTitle()); }*/
解決的方案是:
先隱藏所有的fragment,然後進入點擊事件,如果該fragment已經實例化,那就show就好,如果沒有還未實例化,那就先new一個,然後show,最後一定記得commit,我就是由於沒寫這句代碼導致空指針異常。還有一點注意的是必須先實例化你第一個進入的fragment。修改之後的代碼如下:
private void initOpenMenuItem(View popupWindow_view) { DrawableCenterTextView menu_price = (DrawableCenterTextView) popupWindow_view .findViewById(R.id.menu_price); menu_price.setOnClickListener(new OnClickListener() { FragmentTransaction transaction; @Override public void onClick(View v) { progressDialog.show(); transaction = manager.beginTransaction(); hideFragments(transaction); /* * qiulinhe:2015年7月21日10:54:51 解決切換卡頓的問題 */ if (priceFragment == null) { // 如果MessageFragment為空,則創建一個並添加到界面上 priceFragment = new PriceFragment(); transaction.add(R.id.fragment_container, priceFragment); titleView.setText(priceFragment.getFragmentTitle()); } else { // 如果MessageFragment不為空,則直接將它顯示出來 transaction.show(priceFragment); titleView.setText(priceFragment.getFragmentTitle()); } transaction.commit(); popupWindow.dismiss(); progressDialog.dismiss(); } }); } /** * 將所有的Fragment都置為隱藏狀態。 * * @param transaction * 用於對Fragment執行操作的事務 */ private void hideFragments(FragmentTransaction transaction) { if (priceFragment != null) { transaction.hide(priceFragment); } if (openPositionFragment != null) { transaction.hide(openPositionFragment); } if (closeHisFragment != null) { transaction.hide(closeHisFragment); } if (orderHisFragment != null) { transaction.hide(orderHisFragment); } }這樣就可以解決fragment切換重疊,無法正常顯示的問題。不過這裡提一個問題,就是hide方法執行之後,被隱藏的fragment,如果後台在獲取數據,刷新界面,是否會導致數據太多,程序崩潰的問題?
經過後台打印的時候,的確顯示的當前fragment更新數據,但那些隱藏的fragment仍然在後台運行,這勢必導致內存越來越被占用。
ExpandableListView可擴展列表一般可用來開發類似QQ聯系人的界面效果。簡單整理了一下ExpandableListView的使用,希望幫助到需要的親們,由於
Android高級控件——ViewPager、GridView、popwindow、SlideMenu(下)android:screenOrien
百度視頻播放器是百度公司推出的一款為Android用戶精心優化的免費視頻應用,集視頻搜索、視頻推薦、離線觀看、劇集提醒等等眾多創新優秀功能於一身。它不僅僅是
昨天發現自己的一個應用程序的名稱不見了,我很是納悶!!!如下圖所示: 我自己的錯誤的配置文件: 後來請教了一個大四學長,人家