前提・実現したいこと
Wear OS 向けにスタンドアロンアプリを作成しようとしています。
fragmentを使用してレイアウトを作成しようとしたところfragmentを読み込めない旨のエラーメッセージが出力されました。
発生している問題・エラーメッセージ
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplicationtest/com.example.myapplicationtest.Main2Activity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.example.myapplicationtest.BlankFragment that is not a Fragment Caused by: java.lang.ClassCastException
該当のソースコード
BlankFragment.kt
Kotlin
1 2package com.example.myapplicationtest 3 4import android.os.Bundle 5import androidx.fragment.app.Fragment 6import android.view.LayoutInflater 7import android.view.View 8import android.view.ViewGroup 9 10class BlankFragment : Fragment() { 11 override fun onCreateView( 12 inflater: LayoutInflater, container: ViewGroup?, 13 savedInstanceState: Bundle? 14 ): View? { 15 // Inflate the layout for this fragment 16 return inflater.inflate(R.layout.fragment_blank, container, false) 17 } 18}
fragment_blank.xml
xml
1<?xml version="1.0" encoding="utf-8"?> 2<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 tools:context=".BlankFragment"> 7 <TextView 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:gravity="center" 11 android:text="@string/hello_blank_fragment" /> 12</FrameLayout>
Main2Activity.kt
Kotlin
1package com.example.myapplicationtest 2 3import android.os.Bundle 4import android.support.wearable.activity.WearableActivity 5import android.view.View 6import android.widget.Button 7 8class Main2Activity : WearableActivity() { 9 override fun onCreate(savedInstanceState: Bundle?) { 10 super.onCreate(savedInstanceState) 11 setContentView(R.layout.activity_main2) 12 13 //リスナークラスのインスタンスを生成 14 val listener = HelloListener() 15 //リソースからボタンの読み込み 16 val button_click = findViewById<Button>(R.id.button2) 17 //ボタンにリスナを設定 18 button_click.setOnClickListener(listener) 19 } 20 //HalloListenerクラスの定義 21 private inner class HelloListener : View.OnClickListener{ 22 //onClickメソッドの定義 23 override fun onClick(view: View){ 24 //idのR値に応じて処理の分岐 25 when(view.id){ 26 //ボタン動作 27 R.id.button2 -> { 28 finish() 29 } 30 }//End of When 31 } 32 } 33}
activity_main2.xml
xml
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 xmlns:app="http://schemas.android.com/apk/res-auto" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 tools:context=".Main2Activity"> 9 <fragment 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:name="com.example.myapplicationtest.BlankFragment" 13 android:id="@+id/fragment" 14 android:layout_marginTop="8dp" 15 app:layout_constraintTop_toTopOf="parent" android:layout_marginBottom="8dp" 16 app:layout_constraintBottom_toTopOf="@+id/button2" app:layout_constraintStart_toStartOf="parent" 17 android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"/> 18 <Button 19 android:text="Button" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:id="@+id/button2" android:layout_marginTop="8dp" 23 app:layout_constraintTop_toTopOf="parent" android:layout_marginBottom="8dp" 24 app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" 25 android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"/> 26</androidx.constraintlayout.widget.ConstraintLayout>
試したこと
ADSのツールで追加したBlankFragmentをMain2Activityのレイアウトに表示させようとしましたがエラーでAppStop。
元アプリはNewProjectで作成できるWear向けBlankAppにMain2Activityを追加してActivity間をボタンで行き来できるようにしただけの状態です。提示したソースのほかにMainActivityとレイアウト/リソース関連ファイルが存在しています。
WearableActivityではなくAppCompatActivityを継承させてスマホ形式で実行した場合すんなりと動いてしまいます。
検索しても恐らくFragmentを扱ううえで基本的なことすぎて原因が判らず助けてください。
補足情報(FW/ツールのバージョンなど)
テスト環境:Wear OS Round Chin API 26 Resolution 300*320:hdpi
ビルド環境: Android Gradle Plugin Version 3.5.0 Gradle Version 5.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/22 04:19
2019/08/22 23:38 編集
2019/08/23 03:46