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

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

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

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

Android Studio

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

Kotlin

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

Q&A

解決済

2回答

1213閲覧

【Android Studio】テンプレートで作成されたfabクラスのunsolvedを解決したい

sawaIT

総合スコア21

Android

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

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2018/08/15 05:10

編集2018/09/08 20:49

前提・実現したいこと

Androidアプリ作成の勉強をしていてAndroid Studioの3.1.4をインストールしました。

Mainアクティビティから(ナビゲーションドロワーアクティビティとして作成した)
Topアクティビティへ遷移させる際に下記のエラーが出るためにビルドが失敗するので解決したいです。

※setOnClickListener からコメントアウトしてビルドをすると通り遷移も確認できてます。

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

unresolved reference :fab unresolved reference :it

該当のソースコード

Kotlin

1import android.os.Bundle 2import android.support.design.widget.Snackbar 3import android.support.design.widget.NavigationView 4import android.support.v4.view.GravityCompat 5import android.support.v7.app.ActionBarDrawerToggle 6import android.support.v7.app.AppCompatActivity 7import android.view.Menu 8import android.view.MenuItem 9import kotlinx.android.synthetic.main.activity_top.* 10import kotlinx.android.synthetic.main.app_bar_top.* 11 12 13 14class Top : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { 15 16 override fun onCreate(savedInstanceState: Bundle?) { 17 super.onCreate(savedInstanceState) 18 setContentView(R.layout.activity_top) 19 setSupportActionBar(toolbar) 20 21 //fabが未解決 22 fab.setOnClickListener { 23 //itも未解決(fabが解決すればいい?) 24 Snackbar.make(it, "Replace with your own action", Snackbar.LENGTH_LONG) 25 .setAction("Action", null).show() 26 }

試したこと

未解決なので宣言すればいいと思ったので、下記を追加
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
→Kotlinに変換された val fab = findViewById<View>(R.id.fab) as FloatingActionButton 

unresolved reference :View

下記も見てみましたが、
https://teratail.com/questions/77650
(同じ問題だと仮定して)「sample」のところに何を記述したらいいかわかりませんでした。

import sample.qiitaclient.model.User import sample.qiitaclient.view.ArticleView

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

Android Studio 3.1.4
Build #AI-173.4907809, built on July 24, 2018
JRE: 1.8.0_152-release-1024-b02 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

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

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

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

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

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

guest

回答2

0

ベストアンサー

いくつか確認なのですが。

プロジェクトを新規作成で、Include Kotlin supportにチェックを入れて作成したプロジェクトなのでしょうか。

Mainというのは最初に作ったEmpty Activityで、Topというのはプロジェクト作成後にNew→Activity→Navigation Drawer Activityで追加したアクティビティなのでしょうか。

この操作で追加したらTop.ktには雛形となるコードが記述されているかと思いますが、質問のコードはそれを除去して記述したものなのでしょうか。前述の操作で作られたTop.ktのonCreateの中に、下記のように追記してみましたが、こちらでは参照エラーにはなりません。

R.id.fabというIDの参照は通るとのことですが、ID名での直接参照が通らないというのはKotlin Android Extensionsが機能していないということになるかと思いますが、Include Kotlin supportにチェックを入れて作られたプロジェクトならば、最初からこのExtensionは有効になった状態で作られているはずです。単純な記述ですら通らないというのは、Include Kotlin supportにチェックを入れずに作ったプロジェクトを、後からコンバートしようとした操作に何かしら誤りがあることが考えられますが、その辺に心当たりはありませんか?

あと、itという変数は唐突に出てきているように思うのですが、Navigation Drawer ActivityのXMLに何かしら自分で追記したViewに与えたIDなのでしょうか?

(BA後追記)
末節で全く見当外れな記述をしてしまったため、BA後で申し訳ありませんが後日参照されたときのために取り消し線を引かせていただきます。わたしゃ何書いてるんだ、恥ずかしい・・・

投稿2018/08/15 06:08

編集2018/08/15 14:14
keicha_hrs

総合スコア6766

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

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

sawaIT

2018/08/15 06:30

迅速なご回答ありがとうございます。 出てしまったので、夜確認してみます。 >プロジェクトを新規作成で、Include Kotlin supportにチェックを入れて作成したプロジェクトなのでしょうか。 >Mainというのは最初に作ったEmpty Activityで、Topというのはプロジェクト作成後に>New→Activity→Navigation Drawer Activityで追加したアクティビティなのでしょうか。 上記の認識で合っております。 >Include Kotlin supportにチェックを入れずに作ったプロジェクトを、後からコンバートしようとした操作に何かしら誤りがあることが考えられますが、その辺に心当たりはありませんか? チェックはつけた認識なので、kotlinへのコンバートが走ったのかと思われます >itという変数は唐突に出てきているように思うのですが、Navigation Drawer ActivityのXMLに何かしら自分で追記したViewに与えたIDなのでしょうか? 自分ではtopについてはまだなにもしておりません。 結論、原因はともかく一度やり直した方が良さそうなイメージですね
sawaIT

2018/08/15 13:57

keicha_hrsさん ありがとうございました。 何を間違えたか結局わからず仕舞いでしたが一度プロジェクトを消して確認しながらアクティビティを作成したら問題なくビルドできました。 やはり何かしらコンバートしてしまったように思います。 無事解決いたしましたのでベストアンサーとさせていただきます。
guest

0

(同じ問題だと仮定して)「sample」のところに何を記述したらいいかわかりませんでした。

参考にされたものでは
sample.qiitaclient
これはpacagenameですから

該当プロジェクトのパッケージを設定するのではどうでしょう

投稿2018/08/15 05:51

aja

総合スコア3733

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

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

sawaIT

2018/08/15 06:20

迅速なご回答ありがとうございます。 出てしまったので、夜確認してみます。 未確認のままで恐縮ではございますが、 拾ってきた回答についてはqiitaclientといったオリジナルのクラスが既に存在し何かしらの引き継ぎを要するものであって、本件で期待した形とは違うのかと思いました… ※自分で提示しておいて後で気付きました。申し訳ございません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問