1.出現fragment後臺棧的bug。html
bug描述:當點擊加入後臺棧的操做按鈕改變指定控件的內容以後,稱爲A操做;接下來又點擊其它沒有操做後臺棧的按鈕來修改原來指定的控件內容,稱爲B操做。而後點擊back鍵,就會出現A操做以前的界面與B操做疊加的bug。android
由於咱們程序中改變的指定控件是FrameLayout,編程
<FrameLayout | |
android:id="@+id/frame_content" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:layout_above="@+id/frameMenu" | |
android:layout_below="@+id/main_title" > | |
</FrameLayout> |
由於點擊back鍵是回到了A操做以前的界面,而點擊back鍵並不影響B操做顯示的界面,FrameLayout會疊加,因此就會出現疊加的狀況。數組
解決方法,當進行B操做的時候改變指定控件的內容時,清空後臺棧。測試
清空方法:popBackStackImmediate()this
參考:http://www.cnblogs.com/qixing/p/4015262.htmlspa
這個方法:if (getSupportFragmentManager().getFragments() != null
&& getSupportFragmentManager().getFragments().size() > 0) {
getSupportFragmentManager().getFragments().clear();code
會出現數組越界的bug。htm
我所用的方法,經測試沒有問題:對象
// 清除後臺棧by Hanshenquan
private void clearBackStack() {
if (getSupportFragmentManager().getFragments() != null
&& getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStackImmediate(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
getBackStackEntryCount()是得到後臺棧中的數量。
測試,顯示back棧中對象的數量:
int num = getSupportFragmentManager().getBackStackEntryCount();
Toast.makeText(this, "Fragment數量 "+String.valueOf(num), Toast.LENGTH_LONG).show();
2.手機線鏈接很差,會出一些問題,因此在沒有其它錯誤,且重啓編程軟件無效以後,應該考慮從新插拔鏈接手機的數據線,確保鏈接操做沒有問題。
3.獲取類的對象3種方式。Class.forName(),類名.class和對象.getClass。