teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

問題②のエラーが消えたのでエラー内容は削除しました。また、コメントを受けて試したことを追記しました。

2020/03/01 18:19

投稿

退会済みユーザー
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`について、`AndroidManifest.xml`でフラグメントと組み合わせる場合は、どのように明記すればいいのかわからない
22
+ ### ②個別のアクティビティを指定する(今回の場合は画面遷移)`SubActivity.kt`について
23
23
 
24
- 現在のAndroidManifest.xmlでは、`.SubActivity`が`Unresolved class`とエラーが出ます。
24
+ 2-1. `AndroidManifest.xml`フラグメントと組み合わせる場合は、現在の書き方で正しいのかどうか
25
- ```
26
- <activity
27
- android:name=".SubActivity"
28
- android:label="@string/app_name" >
29
- </activity>
30
- ```
31
25
 
32
- これは、SubActivity.ktで、以下の部分が`Unresolved reference: R`エラーが出てのにも原因があると考えられますが、`Empty Activity`を選択したプロジェクトでは起こらなかったエーで、検索しも解決方法がわりません。
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