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

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

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

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

Kotlin

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

Q&A

解決済

1回答

2477閲覧

ボタンがクリックできない

tarofess

総合スコア127

Android

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

Kotlin

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

0グッド

0クリップ

投稿2017/01/08 09:21

現在画面のボタンをクリックしても何も反応しません。コードは以下のようになっています。
button_profile.setOnClickListener内のログが全く表示されていません。

Kotlin

1class SettingsFragment : Fragment() { 2 3 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle): View { 4 super.onCreateView(inflater, container, savedInstanceState) 5 6 return inflater.inflate(R.layout.fragment_settings, container, false) 7 } 8 9 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { 10 super.onViewCreated(view, savedInstanceState) 11 12 button_profile.setOnClickListener { view -> 13 Log.d("test", "called!") 14 } 15 } 16} 17 18class MainActivity : AppCompatActivity() { 19 20 override fun onCreate(savedInstanceState: Bundle?) { 21 super.onCreate(savedInstanceState) 22 setContentView(R.layout.activity_main) 23 24 setTabs() 25 } 26 27 fun setTabs() { 28 try { 29 val tabHost = findViewById(R.id.tabHost) as TabHost 30 tabHost.setup() 31 var spec: TabHost.TabSpec 32 33 // Tab1 34 spec = tabHost.newTabSpec("Tab1") 35 .setIndicator("Tab1", ContextCompat.getDrawable(this, R.drawable.tab_hitokoto)) 36 .setContent(R.id.tab_hitokoto) 37 tabHost.addTab(spec) 38 39 // Tab2 40 spec = tabHost.newTabSpec("Tab2") 41 .setIndicator("Tab2", ContextCompat.getDrawable(this, R.drawable.tab_recording)) 42 .setContent(R.id.tab_recording) 43 tabHost.addTab(spec) 44 45 // Tab3 46 spec = tabHost.newTabSpec("Tab3") 47 .setIndicator("Tab3", ContextCompat.getDrawable(this, R.drawable.tab_settings)) 48 .setContent(R.id.tab_settings) 49 tabHost.addTab(spec) 50 51 tabHost.currentTab = 0 52 } catch (e: IllegalArgumentException) { 53 e.printStackTrace() 54 } catch (e: RuntimeException) { 55 e.printStackTrace() 56 } 57 58 } 59}

android

1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" android:layout_height="match_parent"> 4 5 <Button 6 android:id="@+id/button_profile" 7 android:background="@drawable/camera" 8 android:layout_width="300dp" 9 android:layout_height="300dp" 10 android:layout_centerInParent="true"/> 11 12</RelativeLayout>

上記のコードのどこがおかしいでしょうか?
どなたかわかる方がいれば教えていただきたいです教えていただきたいです。よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/01/08 10:06

button_profileの初期化はどこでやっていますか?
tarofess

2017/01/08 10:38

Kotlin Android Extensionsというプラグインを使ってidを指定してリスナーの処理を書けるようにしています。
guest

回答1

0

ベストアンサー

importのところを

import kotlinx.android.synthetic.main.レイアウト名.view.*

のような形にしてみて下さい。私もKotlin Android Extensionsを使っているのですが、私の環境ではこれで動いています。

投稿2017/01/08 10:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tarofess

2017/01/08 11:09

import kotlinx.android.synthetic.main.fragment_settings.view.* というふうにしてみたのですが、クリックに反応しませんでした。。。import文も灰色になってしまっています。 import kotlinx.android.synthetic.main.fragment_settings.* これだと文字の色ははっきりしています。
退会済みユーザー

退会済みユーザー

2017/01/08 11:18

そうですか... findViewByIdを使ってボタンのリスナーをセットした際はクリックに反応しますか?
退会済みユーザー

退会済みユーザー

2017/01/08 11:29

少し調べてみましたがtabHost.addTabの使いかたが間違っているようです。 tabHost.addTab(spec)をtabHost.addTab(spec,SettingsFragment::java.class, null)に変更してみて下さい。
tarofess

2017/01/08 11:44

tabHost.addTab(spec,SettingsFragment::java.class, null)と書いてみたのですが、javaの文字が赤くなり、classの横の,に「Name expected」のエラーが出て、nullに「Expecting ')'」のエラーが出てしまいます。。。
tarofess

2017/01/08 11:45

確かにtabHostの使い方が間違っている気がします。SettingFragmentのonCreateViewが呼ばれていなかったです。
退会済みユーザー

退会済みユーザー

2017/01/08 11:47

すみません。class.javaでした。
tarofess

2017/01/08 12:03

class.javaに修正したのですが、「Too many arguments for public open fun addTab(tabSpec: TabHost.TabSpec!): Unit defined in android.widget.TabHost」というエラーが表示されました。。。
tarofess

2017/01/08 12:19

FragmentTabHostを使わなければいけないんですね。TabHostは非推奨なので、やはりTabLayoutを使ってタブを実装したいと思います。親切に回答くださり誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問