我正在開發一個使用片段的應用程序,上週我的測試設備採用了lolipop更新。當我在一個lolipop設備上測試我的應用程序時,我看到Fragment Transaction的替換方法無法正常工作。API-21上片段的事務替換留在
雖然在Kitkat版本上一切都很好,但它易於在Lolipop版本中使用。
爲了解釋我的情況,我添加了一些圖像。
- 第一屏幕----------------------------奇巧------------- ------------------------棒棒糖-------------
正如你所看到的,當我使用kitkat
,一切正常,但只要我使用lolipop
片段事務替換工作混淆。
這是我的按鈕代碼;
mButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FeedbackFragment mFragmentFeedBack = new FeedbackFragment();
android.app.FragmentManager fm = getFragmentManager();
fm.executePendingTransactions();
android.app.FragmentTransaction fragmentTransaction = fm.beginTransaction();
if (mFragmentFeedBack.isVisible()) {
fragmentTransaction.hide(mFragmentFeedBack);
} else {
if (!mFragmentFeedBack.isAdded()) {
fragmentTransaction.replace(R.id.containerfragment, mFragmentFeedBack);
}
fragmentTransaction.show(mFragmentFeedBack);
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
這是我的xml;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="117dp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/containerfragment">
</FrameLayout>
編輯:奇巧版本的平板電腦上運行的,但我想我的手機上(奇巧版本)的應用程序的結果是一樣的。沒有變化。
謝謝。
你有沒有檢查平板電腦(與棒棒糖)相同的應用程序? –
是的。它的行爲相同。在測試棒棒糖版本設備時,更換片段留在後面。 – salih
您說過「我看到Fragment Transaction的替換方法無法正常工作」。但在我看來,由於代碼if(mFragmentFeedBack.isVisible()),fragmentTransaction.hide被執行而不是replace()。你認爲這是可能的嗎?在這種情況下,至少檢查KitKat。 –