Scala sbtでビルドするとFAILED DOWNLOAD

Scalaまったく初心者の私です。

今回、Windows10+IntelliJ で前からあるプロジェクトのメンテナンスをします。

まずは、やっぱり一応動作させたいじゃないですか。

前回、チュートリアルとかやってみて、

「ふむふむ。Scalaってsbtというビルドツールがあるのね。」

とかわかってきたぐらいです。

まずは、sbtをインストールします。

涙が出るほど簡単です!下記から、Windows用のmsiをダウンロードしてインスコします。

https://www.scala-sbt.org/1.x/docs/ja/Installing-sbt-on-Windows.html

ありがたやー。( ˊᵕˋ )

コマンドプロンプトで、

sbt

って打ってみます。

なんやかんや出てきたら、sbtインストール成功です。

じゃあ、ついに、プロジェクトをビルドしてみますYO!

今回は、既存プロジェクトのメンテなので、もうsbtファイルが存在しています。sbtファイルは、ビルドに必要な情報が入ったファイルです。

build.sbt

コマンドプロンプトで、上記のファイルのあるフォルダへ移動します。

sbt

と打ちます。

ドン!

いろいろとメッセージが流れていきます。

FAILED DOWNLOAD

ってなってしまいました…。(>_<)

調べたところ、下記にあるように

https://stackoverflow.com/questions/25306976/failed-download-error-while-trying-to-create-scala-jar

build.sbtに下記を付け加えます。

libraryDependencies ++= Seq(
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" artifacts (
Artifact("javax.servlet", "jar", "jar")
)
)

そうしたら、無事にビルドできました!( ˊᵕˋ )


Scala IntelliJ でError:Abnormal build process termination

いろいろな事情があり、Scalaに取り組んでいる私です。

ちょっと前のコードをメンテする的なやつなので、そんなに踏み込んで勉強する気はありません。2020年、Scalaの立ち位置ってどうなんでしょうね。

興味のある方は、2018年の下記記事をご覧ください。田島メンターによると、Scalaは年収が一番高い言語らしいw そんで、学習コストも高いんだって。
https://techacademy.jp/magazine/17334

で、私の環境ですが、Windows10+IntelliJ (Community 2020.1) でやっていこうと思います。

最初にテスト的に下記リンクにある公式のチュートリアルをやります。

Intellij で Scala を始める

https://docs.scala-lang.org/ja/getting-started/intellij-track/getting-started-with-scala-in-intellij.html

で、Runしようとしたら、タイトルのエラーですよ。

Error:Abnormal build process termination: 
C:\Users\杉田玄白.jdks\openjdk-14.0.1\bin\java.exe -Xmx700m -Djava.awt.headless=true -Djdt.compiler.useSingleThread=true -Dpreload.project.path=D:/HelloWorld -Dpreload.config.path=C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Dio.netty.initialSeedUniquifier=3471885264834181241 -Dfile.encoding=windows-31j -Duser.language=ja -Duser.country=JP -Didea.paths.selector=IdeaIC2020.1 "-Didea.home.path=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.2" -Didea.config.path=C:\Users\杉田玄白\AppData\Roaming\JetBrains\IdeaIC2020.1 -Didea.plugins.path=C:\Users\杉田玄白\AppData\Roaming\JetBrains\IdeaIC2020.1\plugins -Djps.log.dir=C:/Users/杉田玄白/AppData/Local/JetBrains/IdeaIC2020.1/log/build-log "-Djps.fallback.jdk.home=C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/jbr" -Djps.fallback.jdk.version=11.0.7 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/杉田玄白/AppData/Local/JetBrains/IdeaIC2020.1/compile-server/helloworld_f3806def/temp -Djps.backward.ref.index.builder=true -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=\"C:\Users\杉田玄白\AppData\Local\Temp\kotlin-idea-14938841863943177906-is-running\" -Dscala.compiler.indices.rebuild=true -classpath "C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-model-builder-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/jps-model.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/idea_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-resolver-provider-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/plexus-interpolation-1.25.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/gson-2.8.6.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/slf4j-api-1.7.25.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/protobuf-java-3.5.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/forms-1.1-preview.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-model-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/jna.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/jps-builders-6.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/platform-api.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/lz4-java-1.7.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-builder-support-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/maven-resolver-transport-http-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/httpclient-4.5.12.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/plexus-utils-3.2.0.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/maven-resolver-transport-file-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/annotations.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/netty-common-4.1.47.Final.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/jps-builders.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/netty-transport-4.1.47.Final.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-resolver-api-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/jdom.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/netty-codec-4.1.47.Final.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/log4j.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/asm-all-7.0.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/aether-dependency-resolver.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/trove4j.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/commons-lang3-3.9.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/commons-logging-1.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/netty-buffer-4.1.47.Final.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/jna-platform.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/oro-2.0.8.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/plexus-component-annotations-1.7.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/netty-resolver-4.1.47.Final.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/nanoxml-2.2.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/javac2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/guava-28.2-jre.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/qdox-2.0-M10.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/httpcore-4.4.13.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-resolver-spi-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/resources_en.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-artifact-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-repository-metadata-3.6.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-resolver-impl-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/maven-resolver-util-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/java/lib/maven-resolver-connector-basic-1.3.3.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/gson-2.8.6.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/jarutils.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/guava-28.2-jre.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/common-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/gradle/lib/gradle-api-6.1.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/gson-2.8.6.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/jarutils.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/lib/guava-28.2-jre.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/common-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/gradle/lib/gradle-api-6.1.1.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/IntelliLang/lib/intellilang-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/eclipse/lib/eclipse-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/eclipse/lib/common-eclipse-util.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/ant/lib/ant-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Groovy/lib/groovy-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Groovy/lib/groovy-rt-constants.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/maven/lib/maven-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/gradle-java/lib/gradle-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Kotlin/lib/kotlin-stdlib.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Kotlin/lib/kotlin-reflect.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/Kotlin/lib/kotlin-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/uiDesigner/lib/jps/ui-designer-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/devkit/lib/devkit-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/javaFX/lib/javaFX-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/javaFX/lib/common-javaFX-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/jps/android-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/android-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/build-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/android-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/android-extensions-ide.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/sdk-common-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/common-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/repository-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/sdklib-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/jarutils.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/layoutlib-api-26.6.0.2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.2/plugins/android/lib/manifest-merger-26.6.0.2.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/scala-library.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/compiler-shared.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/jps/nailgun.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/jps/compiler-jps.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/jps/sbt-interface.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/jps/incremental-compiler.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/spray-json_2.12-1.3.4.jar;C:/Users/杉田玄白/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/Scala/lib/scala-compiler-indices-protocol_2.12-0.1.1.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 65281 d607197f-42f1-4fc9-b319-d3aff1d2dc11 C:/Users/杉田玄白/AppData/Local/JetBrains/IdeaIC2020.1/compile-server
Error occurred during initialization of VM
Failed setting boot class path.

ぎゃー!!

イヤー!!

助けて、田島メンター!!

ってなりますよね。

残念ながら田島メンターは近くにいないので、ググります。

でました。

StackOverflowさんは本当に神ですね。(>_<)

https://stackoverflow.com/questions/43294333/intellij-idea-abnormal-build-process-termination-after-heap-size-change

JDKが32bitだとこうなるらしいです。

64bit版のJDKをインストールして、IntelliJ でのJDKの指定を64bitのものになおすと、治りました!


Git SourceTreeを使って、プログラム全体を過去のある日の状態に戻す

大した話じゃないんですけどね。

「ああー、やってしまった!過去のあの日の戻れたら…。」

という後悔は人生でつきものですよね!!

プログラミングでも、一つのファイルだけじゃなくって、全体的に、プログラムを過去のバージョンへ戻したい!ということがあるかと思います。

私はSourceTreeをGithubのクライアントとして使ってます。

ちゃちゃっとできるので、メモしておきます。

SourceTreeはWindows版の3.3.8です。

①まず、転ばぬ先の杖で新しいブランチを作ります。今やっているものがどうなってもいい!という場合は、この手順は必要ありません。ここでは、サンプルとしてtime_leapブランチを作ります。

②そのブランチをチェックアウトしていることを確認します。(下記のように丸がついているのでわかると思います)

③んで、戻したい時点のコミットを、右の部分から選んで、右クリックします。

ここでは、5月15日18:40までのコミットまで戻したいとします。

現在のブランチをこのコミットまでリセット

次のダイアログで、OKを押して終わりです。

Javascriptだけで値をPOSTして、ページ遷移もする方法

ちょっとした事情があって、Javascriptだけで値をPOSTし、ページ遷移もしたいなということがありました。

HTMLでタグを書いて、<input> とか<submit>とかやればいいんですが、ちょっとした値を渡したいだけなので、面倒だな、というのが事情でした。(大した事情ではなかった)

しかし、ググっても意外と出てこないんですよ。

Googleさんが出してくれるのは、AjaxでPOSTして値を取ってきましょう ってページばっかり…。同じページに、Javascriptでページ遷移しようみたいなのもあったりするので、Hitするんですかね。

「それじゃ…ダメ…っ!違うっ…!HTMLでやるみたいにやりたいんだ…っ!」

と思い、英語でググったところ、StackOverflowさんにドンピシャでありました。

「ククク…カイジくん…!君が求めていたのは…これ…っ!」

「あ…ありがてぇ…っ!!!formタグを作ってそれにパラメーターを含んだinputタグを作るという悪魔的発想!!!サンプルコードをコピペするだけで、やりたいことができちまった…!」

と感動しましたので、ここでも紹介させていただきます。
Rakesh Pai さんに大感謝ですね。┌o ペコッ

下記に掲載されていたサンプルコードを掲載しておきます。

/**
 * sends a request to the specified url from a form. this will change the window location.
 * @param {string} path the path to send the post request to
 * @param {object} params the paramiters to add to the url
 * @param {string} [method=post] the method to use on the form
 */

function post(path, params, method='post') {

  // The rest of this code assumes you are not using a library.
  // It can be made less wordy if you use one.
  const form = document.createElement('form');
  form.method = method;
  form.action = path;

  for (const key in params) {
    if (params.hasOwnProperty(key)) {
      const hiddenField = document.createElement('input');
      hiddenField.type = 'hidden';
      hiddenField.name = key;
      hiddenField.value = params[key];

      form.appendChild(hiddenField);
    }
  }

  document.body.appendChild(form);
  form.submit();
}

使う場合は、下記のように使います。

post("index.php", {val:"hogehoge"});

転載元はこちら

https://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit/133997#133997

Javascriptだけで次のページにパラメーターをPOSTで渡したいJavascripterのみんなに届け♡

英語で探すって大事だね…(´ω`)

Android jetpack Navigationについて簡単な説明

今回は、完全なサンプルとかではなくって、自分のメモ的な感じです。

調べたきっかけは、安易にアクティビティを作ろうとして、Navigation Drawer Activityというのを作ったら、画面遷移について、あまりにわからなかったことです。

で、Android デベロッパーの公式サイト見ると

https://developer.android.com/guide/navigation/

詳細トピックの下にずらーっていろんな項目が並んで、なんか小難しそうな感じじゃないですか!!?
ナビゲーショングラフって言われても、グラフ??棒グラフ?円グラフ?とかでわかりにくいじゃないですか。

しかし、恐れることはありません。

めっちゃ端的に、このナビゲーションで何が便利になったのか、一言でいうと、

画面遷移をxmlで定義することができる

だと思います。

今回も、Googleさんが用意してくれている、Code Labがよいです。英語ですけどね!

https://codelabs.developers.google.com/codelabs/android-navigation/index.html?index=..%2F..%2Findex#0

かいつまんで例を説明します。なお、下記のサンプルコードはこのCodeLabから拝借しています。

①あるアクティビティの中に、Fragmentが入っていて、いくつもFragmentを動かして画面遷移させる。

②Fragmentの親フラグメントみたいなのをまず作ります。

下記がその状態ですが、MainActivityのレイアウトファイルです。
my_nav_host_fragment
というFragmentのレイアウトが、親フラグメントというか、コンテナみたいな感じです。ここに、ほかのFragmentが入れ替わり立ち代わり入るということになります。

<?xml version="1.0" encoding="utf-8"?>

<androidx.drawerlayout.widget.DrawerLayout
    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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.codelabs.navigation.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

        <fragment
            android:id="@+id/my_nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/mobile_navigation" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_drawer_menu" />
</androidx.drawerlayout.widget.DrawerLayout>

③ 上記のファイルの、

app:navGraph=”@navigation/mobile_navigation”

がキモです。

mobile_navigation.xml というファイルを作ります。

ここに、画面遷移をxmlで定義します。

<?xml version="1.0" encoding="utf-8"?>

<navigation 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"
    app:startDestination="@+id/home_dest">
    <fragment
        android:id="@+id/home_dest"
        android:name="com.example.android.codelabs.navigation.HomeFragment"
        android:label="@string/home"
        tools:layout="@layout/home_fragment">

        <action
            android:id="@+id/next_action"
            app:destination="@id/flow_step_one_dest"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right" />
    </fragment>

    <fragment
        android:id="@+id/flow_step_one_dest"
        android:name="com.example.android.codelabs.navigation.FlowStepFragment"
        tools:layout="@layout/flow_step_one_fragment">
        <argument
            android:name="flowStepNumber"
            app:argType="integer"
            android:defaultValue="1"/>

        <action
            android:id="@+id/next_action"
            app:destination="@+id/flow_step_two_dest">
        </action>
    </fragment>

    <fragment
        android:id="@+id/flow_step_two_dest"
        android:name="com.example.android.codelabs.navigation.FlowStepFragment"
        tools:layout="@layout/flow_step_two_fragment">

        <argument
            android:name="flowStepNumber"
            app:argType="integer"
            android:defaultValue="2"/>

        <action
            android:id="@+id/next_action"
            app:popUpTo="@id/home_dest">
        </action>
    </fragment>
<!--中略-->
</navigation>

Fragmentの中に、actionがありますが、actionが画面遷移さきです。アクションというのが画面遷移だと思ってみてください。

たとえばHomeFragmentという画面から、ボタンを押したらFlowStepFragmentに行きたい場合、まずHomeFragment内にアクションを決めておきます。

<fragment
    android:id="@+id/home_dest"
    android:name="com.example.android.codelabs.navigation.HomeFragment"
    android:label="@string/home"
    tools:layout="@layout/home_fragment">

    <action
        android:id="@+id/next_action"
        app:destination="@id/flow_step_one_dest"
        app:enterAnim="@anim/slide_in_right"
        app:exitAnim="@anim/slide_out_left"
        app:popEnterAnim="@anim/slide_in_left"
        app:popExitAnim="@anim/slide_out_right" />
</fragment>

下記の部分が重要で、このflow_step_one_destってのが、

    android:id="@+id/next_action"
    app:destination="@id/flow_step_one_dest"

すぐ下にある

<fragment
    android:id="@+id/flow_step_one_dest"
    android:name="com.example.android.codelabs.navigation.FlowStepFragment"
    tools:layout="@layout/flow_step_one_fragment">
    <argument
        android:name="flowStepNumber"
        app:argType="integer"
        android:defaultValue="1"/>

    <action
        android:id="@+id/next_action"
        app:destination="@+id/flow_step_two_dest">
    </action>
</fragment>

なんですよ。HomeFragment.kt内で下記のようにすれば、

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val button = view.findViewById<Button>(R.id.navigate_destination_button)
        button?.setOnClickListener {
            findNavController().navigate(R.id.flow_step_one_dest, null)
        }
//後略
}

ボタンを押したらFlowStepFragmentに遷移します。

同じことが、下記のようにしてもできます。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val button = view.findViewById<Button>(R.id.navigate_destination_button)
        button?.setOnClickListener {
           // findNavController().navigate(R.id.flow_step_one_dest, null)
            val action = HomeFragmentDirections.nextAction()
            findNavController().navigate(action)
        }
//後略
}