mkurom / Kotlin_sampleApp

Kotlin勉強用
1 stars 0 forks source link

Fragmentメモ #16

Open mkurom opened 2 years ago

mkurom commented 2 years ago

button_fragment.xml

ボタンのみ配置

Activity側で設定するからDesignでボタンが左端によっているのは気にしない。(画像参照)

fragment

・コード

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.Button">

    <Button
        android:id="@+id/buttonFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button" />
</FrameLayout>

activity_main.xml

main_activity
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

// ここからフラグメント
    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/buttonFragment"  // designのid。activity_main.xmlとbutton_fragment.xmlのidは連動しているので、片方を変更すれば、もう片方も変更される
        android:name="com.example.mvvmsampleapp.view.Button"  //xmlに対応するkotlinファイル。ここでは、パッケージviewのButton.ktファイル
  // 配置はここで決める
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="620dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout="@layout/button_fragment" />  // 追加するxmlファイル。ここでは、button_fragment.xml
// ここまでフラグメント

</androidx.constraintlayout.widget.ConstraintLayout>
mkurom commented 2 years ago

main_fragment.xmlを作成して、Buttonを設置する。 resにnavigationというDIrectoryを追加し、そこにnav_main.xmlを作成する。 nav_main.xmlを開き、「new Destination」をクリックして、main_fragmentをアタッチする。

activity_main.xmlにNavHostFragmentコンテントを追加し、nav_main.xmlを選択する。

実行すると、main_fragment.xmlのボタンの画面が表示される。

mkurom commented 2 years ago

xmlファイルの生成方法

・resディレクトリ(パッケージ)以下で右クリック New/Layout Resource Fileをクリック

スクリーンショット 2022-01-10 23 42 33
mkurom commented 2 years ago

フラグメントのライフサイクル

https://github.com/xxv/android-lifecycle