質問編集履歴

2

XMLファイルも追記しました

2020/08/21 12:32

投稿

youha
youha

スコア1

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

ソースコードが足りなかったため

2020/08/21 12:32

投稿

youha
youha

スコア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
- ```Kotlin
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を付けました