回答編集履歴
2
回答修正
answer
CHANGED
@@ -26,10 +26,12 @@
|
|
26
26
|
// Inflate the layout for this fragment
|
27
27
|
View v = inflater.inflate(R.layout.fragment_0, container, false);
|
28
28
|
|
29
|
-
FragmentManager fragmentManager =
|
29
|
+
FragmentManager fragmentManager = getFragmentManager();
|
30
|
+
if(fragmentManager != null){
|
30
|
-
|
31
|
+
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
31
|
-
|
32
|
+
fragmentTransaction.replace(R.id.container, Fragment1.newInstance());
|
32
|
-
|
33
|
+
fragmentTransaction.commit();
|
34
|
+
}
|
33
35
|
|
34
36
|
return v;
|
35
37
|
}
|
1
回答追加
answer
CHANGED
@@ -2,4 +2,38 @@
|
|
2
2
|
|
3
3
|
[fragment遷移時、画面が重なり前のページが機能してしまう場合の対処法 | Qiita](https://qiita.com/rui0930/items/420cd3a6920d8c24948f)
|
4
4
|
|
5
|
-
このサイトの例の場合、空のFrameLayoutを配置しています。この例に倣えば、コードでここにまずFragment1を描画し、ボタンの押下でFragment2に遷移させれば、重なって表示されることはないのではないかと思います。
|
5
|
+
このサイトの例の場合、空のFrameLayoutを配置しています。この例に倣えば、コードでここにまずFragment1を描画し、ボタンの押下でFragment2に遷移させれば、重なって表示されることはないのではないかと思います。
|
6
|
+
|
7
|
+
---
|
8
|
+
|
9
|
+
> FrameLayoutにして見たところ
|
10
|
+
|
11
|
+
というのは、Fragment1のLinearLayoutCompatをFrameLayoutに変えてみたということでしょうか。そうではなく、「FrameLayoutのみ」の言わばFragment0を作成して、これをまず描画してみてはどうでしょうかということです。
|
12
|
+
|
13
|
+
fragment_0.xml
|
14
|
+
```xml
|
15
|
+
<?xml version="1.0" encoding="utf-8"?>
|
16
|
+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
17
|
+
android:id="@+id/container"
|
18
|
+
android:layout_width="match_parent"
|
19
|
+
android:layout_height="match_parent" />
|
20
|
+
```
|
21
|
+
Fragment0.java
|
22
|
+
```java
|
23
|
+
@Override
|
24
|
+
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
|
25
|
+
Bundle savedInstanceState) {
|
26
|
+
// Inflate the layout for this fragment
|
27
|
+
View v = inflater.inflate(R.layout.fragment_0, container, false);
|
28
|
+
|
29
|
+
FragmentManager fragmentManager = getParentFragmentManager();
|
30
|
+
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
31
|
+
fragmentTransaction.replace(R.id.container, Fragment1.newInstance());
|
32
|
+
fragmentTransaction.commit();
|
33
|
+
|
34
|
+
return v;
|
35
|
+
}
|
36
|
+
```
|
37
|
+
のような感じで、fragment_0.xmlの空のFrameLayoutにcontainerとIDを付けて、Fragment0のonCreateView()で即座にFragment1にreplaceしてみてはどうでしょうか。
|
38
|
+
|
39
|
+
一応、PageViewer2を用いて手元でテストしてみましたが、遷移前のFragment1の描画が残ることなくFragment2に切り替わります。
|