質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1894閲覧

Android Studio 設定画面が反映されない

退会済みユーザー

退会済みユーザー

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2021/08/16 23:20

編集2021/08/16 23:22

前提・実現したいこと

Android Studio Kotlinでアプリの設定画面を制作しています。
メイン画面からボタンを押すといける画面を想定しています。
Preferenceを正常に読み込んで表示させたい。
公式のドキュメントを参考にしました。
設定 - Android Develops

発生している問題・エラーメッセージ

supportFragmentManager追加時にエラーでアプリが強制終了
supportFragmentManagerをコメントアウトすると、XMLに記述したPreferenceが読み込まれない

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.test, PID: 27255 java.lang.IllegalArgumentException: No view found for id 0x7f08007d (com.example.test:id/container) for fragment SettingsFragment{cf17e28} (da4c1fbf-8459-485d-b089-79672483ee87 id=0x7f08007d) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433) at android.app.Activity.performStart(Activity.java:7980) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3655) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2270) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8125) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

該当のソースコード

res/xml/setting_activity.xml

xml

1<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:app="http://schemas.android.com/apk/res-auto"> 3 4 5 <Preference 6 app:key="test" 7 app:summary="テスト" 8 app:title="テスト" /> 9 <Preference 10 app:key="about" 11 app:summary="ライセンスなど" 12 app:title="このアプリについて" /> 13</PreferenceScreen>

Kotlin

1import android.os.Bundle 2import androidx.appcompat.app.AppCompatActivity 3import androidx.preference.PreferenceFragmentCompat 4 5class SettingsActivity : AppCompatActivity() { 6 7 override fun onCreate(savedInstanceState: Bundle?) { 8 super.onCreate(savedInstanceState) 9 10 supportFragmentManager 11 .beginTransaction() 12 .replace(R.id.container,SettingsFragment()) 13 .commit() 14 15 supportActionBar?.setDisplayHomeAsUpEnabled(true) 16 } 17 18 class SettingsFragment : PreferenceFragmentCompat() { 19 override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { 20 setPreferencesFromResource(R.xml.settings_activity, rootKey) 21 22 } 23 } 24}

AndroidManifest.xml(設定画面の部分のみ)

xml

1<activity 2 android:name=".SettingsActivity" 3 android:exported="true" 4 android:label="@string/title_activity_settings" />

補足情報(FW/ツールのバージョンなど)

Android Studio 2020.3.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/08/16 23:40

SettingsActivity の onCreate で setContentView する必要があるのでは。
退会済みユーザー

退会済みユーザー

2021/08/16 23:47

setPreferencesFromResource(R.xml.settings_activity, rootKey)ではダメなんですかね? setContentView(R.xml.setting_activity)とすると Expected resource of type layoutと言われてしまいますが…
hoshi-takanori

2021/08/17 00:08

res/xml/setting_activity.xml は設定内容を定義したファイルですが、その他に activity のレイアウト定義 (res/layout/setting_activity.xml) を作って、id が container な FrameLayout などを配置する必要があります。(というか、普通に New -> Activity -> Settings Activity すれば勝手にできるはず…。)
退会済みユーザー

退会済みユーザー

2021/08/17 02:37

ありがとうございます。その手順から作ったのですが、何故か生成されていませんでした…
guest

回答1

0

ベストアンサー

res/layout/にxmlファイルを作成し、無事正しく表示できました。感謝です。

投稿2021/08/17 02:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問