質問編集履歴
1
問題②のエラーが消えたのでエラー内容は削除しました。また、コメントを受けて試したことを追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,22 +19,16 @@
|
|
19
19
|
クラスの定義が` Fragment()`となっているDashboardFragment.ktには、`AppCompatActivity()`のアクティビティは書き込めないと思うので、どのようにフラグメントに組み込みたいMainActivity.ktとDashboardFragment.ktとDashboardViewModel.ktを組み合わせればいいのか、わからず困っています。
|
20
20
|
|
21
21
|
|
22
|
-
### ②個別のアクティビティを指定する(今回の場合は画面遷移)`SubActivity.kt`について
|
22
|
+
### ②個別のアクティビティを指定する(今回の場合は画面遷移)`SubActivity.kt`について
|
23
23
|
|
24
|
-
|
24
|
+
2-1. `AndroidManifest.xml`でフラグメントと組み合わせる場合は、現在の書き方で正しいのかどうか
|
25
|
-
```
|
26
|
-
<activity
|
27
|
-
android:name=".SubActivity"
|
28
|
-
android:label="@string/app_name" >
|
29
|
-
</activity>
|
30
|
-
```
|
31
25
|
|
32
|
-
|
26
|
+
2-2. `SubActivity.kt`という名称で現在の階層構造のように`ui`フォルダ下の各フラグメントのファイルにおいていいのか
|
33
|
-
```
|
34
|
-
setContentView(R.layout.activity_sub)
|
35
|
-
```
|
36
27
|
|
28
|
+
エラーは出ていないが、似たようなことをやっているコードを見たことがないため、参考になる記事などがあれば教えていただきたいです。
|
37
29
|
|
30
|
+
|
31
|
+
|
38
32
|
## 該当のソースコード
|
39
33
|
|
40
34
|
フラグメントに組み込みたいMainActivity.kt
|
@@ -221,5 +215,77 @@
|
|
221
215
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
222
216
|
```
|
223
217
|
|
218
|
+
## コメントを受けて試したこと
|
219
|
+
|
220
|
+
app/java/com.example.fragact/MainActivityに組み込みたいMainActivity.ktの内容を追記してみました。
|
221
|
+
|
222
|
+
|
223
|
+
MainActivity
|
224
|
+
```
|
225
|
+
package com.example.fragact
|
226
|
+
|
227
|
+
import android.os.Bundle
|
228
|
+
import com.google.android.material.bottomnavigation.BottomNavigationView
|
229
|
+
import androidx.appcompat.app.AppCompatActivity
|
230
|
+
import androidx.navigation.findNavController
|
231
|
+
import androidx.navigation.ui.AppBarConfiguration
|
232
|
+
import androidx.navigation.ui.setupActionBarWithNavController
|
233
|
+
import androidx.navigation.ui.setupWithNavController
|
234
|
+
import android.content.Intent
|
235
|
+
import kotlinx.android.synthetic.main.activity_main.*
|
236
|
+
|
237
|
+
class MainActivity : AppCompatActivity() {
|
238
|
+
|
239
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
240
|
+
super.onCreate(savedInstanceState)
|
241
|
+
setContentView(R.layout.activity_main)
|
242
|
+
val navView: BottomNavigationView = findViewById(R.id.nav_view)
|
243
|
+
|
244
|
+
val navController = findNavController(R.id.nav_host_fragment)
|
245
|
+
// Passing each menu ID as a set of Ids because each
|
246
|
+
// menu should be considered as top level destinations.
|
247
|
+
val appBarConfiguration = AppBarConfiguration(
|
248
|
+
setOf(
|
249
|
+
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
|
250
|
+
)
|
251
|
+
)
|
252
|
+
setupActionBarWithNavController(navController, appBarConfiguration)
|
253
|
+
navView.setupWithNavController(navController)
|
254
|
+
|
255
|
+
|
256
|
+
sendButton.setOnClickListener {
|
257
|
+
val intent = Intent(application, SubActivity::class.java)
|
258
|
+
startActivity(intent)
|
259
|
+
}
|
260
|
+
}
|
261
|
+
|
262
|
+
}
|
263
|
+
```
|
264
|
+
|
265
|
+
しかし、
|
266
|
+
```
|
267
|
+
sendButton.setOnClickListener {
|
268
|
+
val intent = Intent(application, SubActivity::class.java)
|
269
|
+
startActivity(intent)
|
270
|
+
}
|
271
|
+
```
|
272
|
+
で`sendButton`が`Unresolved reference`となります。
|
273
|
+
|
274
|
+
layoutのactivity_main.xmlではなく、fragment_dashboard.xmlで「sendButton」を定義していることも原因かと考えられますが、フラグメントごとにアクティビティやレイアウトを設定するには他に方法がわからない状態です。
|
275
|
+
|
276
|
+
```
|
277
|
+
<Button
|
278
|
+
android:id="@+id/sendButton"
|
279
|
+
android:text="@string/move"
|
280
|
+
android:textSize="30sp"
|
281
|
+
android:layout_margin="20dp"
|
282
|
+
android:layout_width="wrap_content"
|
283
|
+
android:layout_height="wrap_content" />
|
284
|
+
```
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
224
290
|
## 補足情報(FW/ツールのバージョンなど)
|
225
291
|
Android Studio 3.5.3
|