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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

Q&A

解決済

2回答

3765閲覧

onCreateメソッドにボタンを設定する記述がどこに入るのか分からない

ippannsimin8

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

0グッド

0クリップ

投稿2018/03/29 11:48

前提・実現したいこと

android studioでボタンを押すと文字が変わるアプリを作っています。このサイトをもとに作っています。
https://akira-watson.com/android/button.html
そこにonCreateメソッドにボタンを設定する記述が載っているのですが自分のactivity_main.xmlのtextのどこにそれを入れればいいのか分かりません。

足りない情報があればおっしゃって下さい

###onCreateメソッドにボタンを設定する記述のソースコード

java

1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // API Level 26 から総称型対応となりました 7 // ボタンを設定 8 Button button = findViewById(R.id.button); 9}

自分のactivity_main.xmlのtext

java

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="jp.gr.java_conf.enokipro555.button2app.MainActivity"> 8 9 <TextView 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="Hello World!" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintLeft_toLeftOf="parent" 15 app:layout_constraintRight_toRightOf="parent" 16 app:layout_constraintTop_toTopOf="parent" /> 17 18</android.support.constraint.ConstraintLayout>

補足情報

android studio3.0

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

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

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

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

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

guest

回答2

0

ベストアンサーが出ていますが一応回答します。
まずこのプログラムの流れを理解してください。

  1. onCreate()が呼ばれる。
  2. onCreate()内にあるsetContentView()が呼ばれる。
  3. setContentView()は、その引数与えられたレイアウトファイルを参照する。今回の例ですと、activity_main.xmlを読み込みます。
  4. 読み込んだレイアウトファイルを、Viewに展開する。展開するという表現は正しくなくViewを描画するといったほうが正しいでしょう。この時、onCreate()の中に何があろうが関係なく、activity_main.xmlの内容が読み込まれます。今回ですとTextViewのみが読み込まれるわけですね。
  5. onCreate()setContentView()以降で、レイアウトファイルのViewを参照し、それに対して何らかの設定をする。

大事なのは、4と5です。Viewはレイアウトファイルに書いてください(後々コードを書いているとレイアウトファイルに書かずに生成する方法も知ると思いますが、最初のうちはその必要はありません)。

ですので、今回の例ですと、まだボタンがレイアウトファイルに書かれていないのでボタン自体が存在していません。onCreate()activity_main.xmlは以下のように書き換える必要があります。

java

1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // レイアウトファイル内にある、id=my_buttonのviewを参照します。 7 Button button = findViewById(R.id.my_button); 8 // ここ以降でボタンの設定をします。 9}

xml

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="jp.gr.java_conf.enokipro555.button2app.MainActivity"> 8 9 <TextView 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="Hello World!" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintLeft_toLeftOf="parent" 15 app:layout_constraintRight_toRightOf="parent" 16 app:layout_constraintTop_toTopOf="parent" /> 17 18 <!--- idを指定することで、javaファイルからの参照を可能にします ---> 19 <!--- レイアウトはご自分で決めてください ---> 20 <Button 21 android:id="@+id/my_button" 22 android:layout_width="64dp" 23 android:layout_height="64dp" /> 24 25 26</android.support.constraint.ConstraintLayout>

投稿2018/04/03 23:41

hiramekun

総合スコア428

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

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

0

ベストアンサー

今のAndroid StudioはConstraintLayoutというレイアウトが標準になっています。これを用いたデザインの仕方が同じサイトに載っているので、これを参考にしてみてはどうでしょうか。

[Android] ConstraintLayout による制約を設定するには

レイアウトエディター上でButtonコンポーネントをActivityに貼り付ける様子が、アニメーションgifで紹介されています。これに習ってButtonを配置すれば、XMLファイルにその状態が自動的にコーディングされます。

投稿2018/03/29 12:55

keicha_hrs

総合スコア6768

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

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

ippannsimin8

2018/03/30 08:59

ConstraintLayout、感覚的でおもしろそうですね。勉強してみます。 ただ今回質問した記述のソースコードがどこに入るかも理解したいので どことどこの間に入るか知りたいです。
keicha_hrs

2018/03/31 11:33 編集

ConstraintLayoutは、「XMLソースを書いてButtonを配置する」のではなく、「GUIによるレイアウトエディターでマウス操作によってButtonを配置したら、それに合わせたXMLソースが自動出力される」という使い方が主体です。GUIによるエディターでコンポーネントを配置したら、その順序によってもButtonタグの記述がどこに来るかは異なってきます。ですから、ご提示いただいたactivity_main.xmlの「この特定の場所」に追加のコードが入るのかという問いに「唯一解」は存在しません。Android Studioをすでに利用できる環境にあるのなら、それを実際に操作してレイアウトエディターButtonを配置し、XMLタブをクリックしてソースがどう変化したかをご自身で視認していただくのが一番かと思うのですが。
keicha_hrs

2018/03/31 11:39

> そこにonCreateメソッドにボタンを設定する記述が載っているのですが自分のactivity_main.xmlのtextのどこにそれを入れればいいのか分かりません。 という質問の文章を読むと、何か噛み合っていない可能性を感じます。onCreateが存在するのはJavaソースコードです。レイアウトエディターで配置したボタンを操作したときに実行されるコードを記述するのも、Javaソースコードです。先の質問文を見ると、そうしたボタンを操作したときのコードがactivity_main.xmlのどこに入るのか?という内容にも読めるのですが、そうだとしたらJavaソースコードとXMLコードの使い分けを勘違いされているのかもしれません。
ippannsimin8

2018/04/03 11:17

正直、回答すべては理解できませんでしたが、質問がこうと答えられない質問だったのはわかりました。実はまだボタンにアクションを加えることはできていません。自分の中で整理してまた質問すると思うので、ぜひまた回答お願いいたします。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問