質問編集履歴
2
XMLファイルも追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -210,6 +210,80 @@
|
|
210
210
|
|
211
211
|
```
|
212
212
|
|
213
|
+
```activity_main.xml
|
214
|
+
|
215
|
+
<?xml version="1.0" encoding="utf-8"?>
|
216
|
+
|
217
|
+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
218
|
+
|
219
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
220
|
+
|
221
|
+
xmlns:tools="http://schemas.android.com/tools"
|
222
|
+
|
223
|
+
android:layout_width="match_parent"
|
224
|
+
|
225
|
+
android:layout_height="match_parent"
|
226
|
+
|
227
|
+
tools:context=".MainActivity">
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
<androidx.viewpager2.widget.ViewPager2
|
232
|
+
|
233
|
+
android:id="@+id/pager"
|
234
|
+
|
235
|
+
android:layout_width="0dp"
|
236
|
+
|
237
|
+
android:layout_height="0dp"
|
238
|
+
|
239
|
+
app:layout_constraintBottom_toBottomOf="parent"
|
240
|
+
|
241
|
+
app:layout_constraintEnd_toEndOf="parent"
|
242
|
+
|
243
|
+
app:layout_constraintStart_toStartOf="parent"
|
244
|
+
|
245
|
+
app:layout_constraintTop_toTopOf="parent" />
|
246
|
+
|
247
|
+
</androidx.constraintlayout.widget.ConstraintLayout>
|
248
|
+
|
249
|
+
```
|
250
|
+
|
251
|
+
```fragment_image.xml
|
252
|
+
|
253
|
+
<?xml version="1.0" encoding="utf-8"?>
|
254
|
+
|
255
|
+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
256
|
+
|
257
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
258
|
+
|
259
|
+
xmlns:tools="http://schemas.android.com/tools"
|
260
|
+
|
261
|
+
android:layout_width="match_parent"
|
262
|
+
|
263
|
+
android:layout_height="match_parent"
|
264
|
+
|
265
|
+
tools:context=".ImageFragment">
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
<ImageView
|
270
|
+
|
271
|
+
android:id="@+id/imageView"
|
272
|
+
|
273
|
+
android:layout_width="match_parent"
|
274
|
+
|
275
|
+
android:layout_height="match_parent"
|
276
|
+
|
277
|
+
android:scaleType="centerCrop"
|
278
|
+
|
279
|
+
tools:src="@tools:sample/backgrounds/scenic" />
|
280
|
+
|
281
|
+
</FrameLayout>
|
282
|
+
|
283
|
+
```
|
284
|
+
|
285
|
+
|
286
|
+
|
213
287
|
|
214
288
|
|
215
289
|
### 試したこと
|
1
ソースコードが足りなかったため
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
フラグメントを用いたスライドショーアプリを作っています
|
12
12
|
|
13
|
-
ViewPagerとViewAdapterを関連付けるところでつまっています(一番下の箇所)
|
13
|
+
ViewPagerとViewAdapterを関連付けるところでつまっています(MainActivityの一番下の箇所)
|
14
14
|
|
15
15
|
|
16
16
|
|
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
-
```
|
37
|
+
```MainActivity
|
38
38
|
|
39
39
|
import androidx.appcompat.app.AppCompatActivity
|
40
40
|
|
@@ -108,6 +108,110 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
+
```ImageFragment
|
112
|
+
|
113
|
+
package com.websarva.wings.android.myslidesshow
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
import android.os.Bundle
|
118
|
+
|
119
|
+
import androidx.fragment.app.Fragment
|
120
|
+
|
121
|
+
import android.view.LayoutInflater
|
122
|
+
|
123
|
+
import android.view.View
|
124
|
+
|
125
|
+
import android.view.ViewGroup
|
126
|
+
|
127
|
+
import kotlinx.android.synthetic.main.fragment_image.*
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
val IMG_RES_ID = "IMG_RES_ID"//Bundleクラスで値を保存するために使用するkey
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
class ImageFragment : Fragment() {
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
override fun onCreateView(
|
140
|
+
|
141
|
+
inflater: LayoutInflater, container: ViewGroup?,
|
142
|
+
|
143
|
+
savedInstanceState: Bundle?
|
144
|
+
|
145
|
+
): View? {
|
146
|
+
|
147
|
+
// Inflate the layout for this fragment
|
148
|
+
|
149
|
+
return inflater.inflate(R.layout.fragment_image, container, false)
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
companion object {// Javaでいうstatic methodで、このクラスImageFragment内でのmethod
|
156
|
+
|
157
|
+
//ImageFragment内のImageViewに関するリソースIDを取得して、生成したimageFragmentのインスタンスを返す
|
158
|
+
|
159
|
+
fun newInstance(imageResourceID: Int) : ImageFragment {
|
160
|
+
|
161
|
+
val bundle = Bundle()
|
162
|
+
|
163
|
+
bundle.putInt(IMG_RES_ID, imageResourceID)//上で生成したBundleインスタンスにidを書き込んでいる
|
164
|
+
|
165
|
+
val imageFragment = ImageFragment()
|
166
|
+
|
167
|
+
imageFragment.arguments = bundle//フラグメントのデータをargumentsに保存する
|
168
|
+
|
169
|
+
return imageFragment
|
170
|
+
|
171
|
+
}
|
172
|
+
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
private var imgResID: Int? = null
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
override fun onCreate(savedInstanceState: Bundle?) {//Bundleから値を取り出す処理
|
182
|
+
|
183
|
+
super.onCreate(savedInstanceState)
|
184
|
+
|
185
|
+
arguments?.let{//安全よびだし演算子とスコープ関数()letを使用して、nullではないことを確認している
|
186
|
+
|
187
|
+
//letを使うことで、スコープ(特定の名前で参照される範囲を限定)でき、いちいちarguments?.getIntと書かずにit.getIntと書くことができる
|
188
|
+
|
189
|
+
imgResID = it.getInt(IMG_RES_ID)
|
190
|
+
|
191
|
+
}
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
198
|
+
|
199
|
+
super.onActivityCreated(savedInstanceState)
|
200
|
+
|
201
|
+
imgResID?.let {
|
202
|
+
|
203
|
+
imageView.setImageResource(it)//imgResIdに保存しておいた画像リソースIDを使用して、フラグメント内のImageViewに画像を設定
|
204
|
+
|
205
|
+
}
|
206
|
+
|
207
|
+
}
|
208
|
+
|
209
|
+
}
|
210
|
+
|
211
|
+
```
|
212
|
+
|
213
|
+
|
214
|
+
|
111
215
|
### 試したこと
|
112
216
|
|
113
217
|
AdapterにBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTというTagを付けました
|