質問編集履歴

2

コード追加

2020/02/20 01:57

投稿

luckyclock
luckyclock

スコア74

test CHANGED
File without changes
test CHANGED
@@ -23,3 +23,273 @@
23
23
  2回目に同じアイテムをタップした場合、新たに生成しようとonCreateが走ったあとすぐに最初に動いていたものを終了しようとonDestroyが走ってしまっています。
24
24
 
25
25
  これは単純に上記の方法で解決できるのだろうか・・・
26
+
27
+ 1.案で解決できそうですが、表示しているフラグメントと同じアイテム選択時は何も処理しないとかできますか?
28
+
29
+ 静的なfragmentなのでもしかして大幅につくりかえないと駄目でしょうか?
30
+
31
+
32
+
33
+
34
+
35
+ MainActivity.java
36
+
37
+ ```java
38
+
39
+ import android.Manifest;
40
+
41
+ import android.content.Intent;
42
+
43
+ import android.content.pm.PackageManager;
44
+
45
+ import android.os.Bundle;
46
+
47
+
48
+
49
+ import com.google.android.material.floatingactionbutton.FloatingActionButton;
50
+
51
+ import com.google.android.material.snackbar.Snackbar;
52
+
53
+
54
+
55
+ import android.view.MenuItem;
56
+
57
+ import android.view.View;
58
+
59
+
60
+
61
+ import androidx.annotation.NonNull;
62
+
63
+ import androidx.core.app.ActivityCompat;
64
+
65
+ import androidx.core.content.ContextCompat;
66
+
67
+ import androidx.navigation.NavController;
68
+
69
+ import androidx.navigation.Navigation;
70
+
71
+ import androidx.navigation.ui.AppBarConfiguration;
72
+
73
+ import androidx.navigation.ui.NavigationUI;
74
+
75
+
76
+
77
+ import com.google.android.material.navigation.NavigationView;
78
+
79
+
80
+
81
+ import androidx.drawerlayout.widget.DrawerLayout;
82
+
83
+
84
+
85
+ import androidx.appcompat.app.AppCompatActivity;
86
+
87
+ import androidx.appcompat.widget.Toolbar;
88
+
89
+
90
+
91
+ import android.view.Menu;
92
+
93
+
94
+
95
+ public class MainActivity extends AppCompatActivity {
96
+
97
+
98
+
99
+ private AppBarConfiguration mAppBarConfiguration;
100
+
101
+
102
+
103
+ @Override
104
+
105
+ protected void onCreate(Bundle savedInstanceState) {
106
+
107
+ super.onCreate(savedInstanceState);
108
+
109
+ setContentView(R.layout.activity_main);
110
+
111
+ Toolbar toolbar = findViewById(R.id.toolbar);
112
+
113
+ setSupportActionBar(toolbar);
114
+
115
+ FloatingActionButton fab = findViewById(R.id.fab);
116
+
117
+ fab.setOnClickListener(new View.OnClickListener() {
118
+
119
+ @Override
120
+
121
+ public void onClick(View view) {
122
+
123
+ Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
124
+
125
+ .setAction("Action", null).show();
126
+
127
+ }
128
+
129
+ });
130
+
131
+ DrawerLayout drawer = findViewById(R.id.drawer_layout);
132
+
133
+ NavigationView navigationView = findViewById(R.id.nav_view);
134
+
135
+
136
+
137
+ // Passing each menu ID as a set of Ids because each
138
+
139
+ // menu should be considered as top level destinations.
140
+
141
+ mAppBarConfiguration = new AppBarConfiguration.Builder(
142
+
143
+ R.id.nav_home, R.id.nav_graph, R.id.nav_slideshow,
144
+
145
+ R.id.nav_tools, R.id.nav_share, R.id.nav_send)
146
+
147
+ .setDrawerLayout(drawer)
148
+
149
+ .build();
150
+
151
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
152
+
153
+ NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
154
+
155
+ NavigationUI.setupWithNavController(navigationView, navController);
156
+
157
+ }
158
+
159
+
160
+
161
+ @Override
162
+
163
+ public boolean onCreateOptionsMenu(Menu menu) {
164
+
165
+ // Inflate the menu; this adds items to the action bar if it is present.
166
+
167
+ getMenuInflater().inflate(R.menu.main, menu);
168
+
169
+ return true;
170
+
171
+ }
172
+
173
+
174
+
175
+ @Override
176
+
177
+ public boolean onSupportNavigateUp() {
178
+
179
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
180
+
181
+ return NavigationUI.navigateUp(navController, mAppBarConfiguration)
182
+
183
+ || super.onSupportNavigateUp();
184
+
185
+ }
186
+
187
+
188
+
189
+ @Override
190
+
191
+ protected void onDestroy()
192
+
193
+ {
194
+
195
+ super.onDestroy();
196
+
197
+ }
198
+
199
+ }
200
+
201
+ ```
202
+
203
+
204
+
205
+ mobile_navigation.xml
206
+
207
+ ```XML
208
+
209
+ <?xml version="1.0" encoding="utf-8"?>
210
+
211
+ <navigation xmlns:android="http://schemas.android.com/apk/res/android"
212
+
213
+ xmlns:app="http://schemas.android.com/apk/res-auto"
214
+
215
+ xmlns:tools="http://schemas.android.com/tools"
216
+
217
+ android:id="@+id/mobile_navigation"
218
+
219
+ app:startDestination="@+id/nav_home">
220
+
221
+
222
+
223
+ <fragment
224
+
225
+ android:id="@+id/nav_home"
226
+
227
+ android:name="XXX.ui.home.HomeFragment"
228
+
229
+ android:label="@string/menu_home"
230
+
231
+ tools:layout="@layout/fragment_home" />
232
+
233
+
234
+
235
+ <fragment
236
+
237
+ android:id="@+id/nav_graph"
238
+
239
+ android:name="XXX.ui.graph.GraphFragment"
240
+
241
+ android:label="@string/menu_graph"
242
+
243
+ tools:layout="@layout/fragment_graph" />
244
+
245
+
246
+
247
+ <fragment
248
+
249
+ android:id="@+id/nav_slideshow"
250
+
251
+ android:name="xxx.ui.slideshow.SlideshowFragment"
252
+
253
+ android:label="@string/menu_slideshow"
254
+
255
+ tools:layout="@layout/fragment_slideshow" />
256
+
257
+
258
+
259
+ <fragment
260
+
261
+ android:id="@+id/nav_tools"
262
+
263
+ android:name="xxx.ui.tools.ToolsFragment"
264
+
265
+ android:label="@string/menu_tools"
266
+
267
+ tools:layout="@layout/fragment_tools" />
268
+
269
+
270
+
271
+ <fragment
272
+
273
+ android:id="@+id/nav_share"
274
+
275
+ android:name="xxx.ui.share.ShareFragment"
276
+
277
+ android:label="@string/menu_share"
278
+
279
+ tools:layout="@layout/fragment_share" />
280
+
281
+
282
+
283
+ <fragment
284
+
285
+ android:id="@+id/nav_send"
286
+
287
+ android:name="xxx.ui.send.SendFragment"
288
+
289
+ android:label="@string/menu_send"
290
+
291
+ tools:layout="@layout/fragment_send" />
292
+
293
+ </navigation>
294
+
295
+ ```

1

補足追加

2020/02/20 01:57

投稿

luckyclock
luckyclock

スコア74

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,13 @@
13
13
  そして実装上どのようにすれば実現できるか知りたいです。
14
14
 
15
15
  1.の解決方法はデフォルトのテンプレートで各アイテムがfragmentタグでxmlに埋め込まれいるので難しいような気がしています。
16
+
17
+
18
+
19
+ 補足
20
+
21
+ 動きを見てみましたが
22
+
23
+ 2回目に同じアイテムをタップした場合、新たに生成しようとonCreateが走ったあとすぐに最初に動いていたものを終了しようとonDestroyが走ってしまっています。
24
+
25
+ これは単純に上記の方法で解決できるのだろうか・・・