0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AndroidStudioでクリックイベントを使う

Last updated at Posted at 2024-12-06

クリック/タップ機能の作成

作る機能

ボタンを押した際に
ボタンを押してください押されました へ変更する

レイアウトの内容
image.png

コード activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <TextView
        android:id="@+id/testText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ボタンを押してください"
        android:textAlignment="center" 
        android:textSize="18dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        />
    <Button
        android:id="@+id/testButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ボタン"
        />
</LinearLayout>


クリック/タップ検知時の処理を追加

まずはMaineActivity.java へクラスとメソッドの追加

追加する場所
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /*+++++++++++
       ここに追加
    +++++++++++*/
}

インポート

import android.widget.TextView;
※TextViewを扱うために必要
コードの3列目くらいに同じくimport~てのがあるので
その下らへんに入れとけばOK

追加するクラスとメソッド

class クラス名 implements View.OnClickListener{
  @Override
  public void onClick(View view){
  ここに処理を記述する
  }
}

処理を入れていく

テキストのオブジェクトを取得

TextView tv = findViewById(R.id.testText)
型は各部品のタグ、今回はTextViewを取得する
activity_main.xmlのTextViewタグ内の
android:id="@+id/testText"を指定することで
変数 tv へ指定したオブジェクトを取得する

取得したTextViewの内容更新

tv.setText("押されました")
取得した変数.setText( ) の ( )へ文字列を入れることで更新される

更新後
    //クリックした際の処理
    class TextListener implements View.OnClickListener{
        @Override
        public void onClick(View view){
        TextView tv = findViewById(R.id.testText);
        tv.setText("押されました");
        }
    }


クリック/タップ検知判定を作る

MaineActivity.java へ処理を追加する

追加する場所
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*+++++++++++
         ここに追加
        +++++++++++*/
    }

    class TextListener implements View.OnClickListener{
        @Override
        public void onClick(View view){
        TextView tv = findViewById(R.id.testText)
        tv.setText("押されました")
        }
    }
}

インポート

import android.widget.Button;
※Buttonを扱うために必要

ボタンのオブジェクトを取得

Button bt = findViewById(R.id.testButton);
TextViewと同じくactivity_main.xmlの
Buttonタグのandroid:id="@+id/testButton"の
testButtonの部分を (R.id."ここに記載") する

インスタンス生成

クリック後の処理を記述したクラスのインスタンスを生成する

TextListenerという名前でクラスを作っているので
TextListener testlistener = new TextListener(); とする。

さっき作ったクリック後の処理を記述したクラス
class TextListener implements View.OnClickListener{
        @Override
        public void onClick(View view){
        TextView tv = findViewById(R.id.testText)
        tv.setText("押されました")
        }
    }
インスタンス生成
クラス名 変数名 = new クラス名();

ボタンオブジェクトのクリック検知処理

bt.setOnClickListener(testlistener)
取得したボタンオブジェクトのbtがクリックされたら
インスタンスtestlistenerを発動する。

追加後の全体図 MainActivity.java
    package com.wabsarva.wings.android.testapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        //今回追加した3行 ↓
        Button bt = findViewById(R.id.testButton);
        TextListener testlistener = new TextListener();
        bt.setOnClickListener(testlistener);
    }

    class TextListener implements View.OnClickListener{
        @Override
        public void onClick(View view){
            TextView tv = findViewById(R.id.testText);
            tv.setText("押されました");
        }
    }
}
//インポートの中にいらんもの混じってるけど気にしない

これで
ボタンが押された→テキストの内容が変更する処理が完了

挙動を確認してみる

エミュレータで確認
携帯.gif

ちゃんとできているみたい、やったね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?