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

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

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

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

Java

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

Android Studio

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

Q&A

解決済

1回答

2020閲覧

onClickが発生しないんです。

indy_papa

総合スコア24

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

Java

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

Android Studio

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

0グッド

0クリップ

投稿2021/06/08 05:28

編集2021/06/08 05:49

Android Studio(java)でアプリ開発中です。
アプリ開発は全くの初めてではないのですが、
ほぼそれに近い状態です。
ネットや書籍を購入していろいろ勉強しながらの
開発をしています。
###開発環境
---Android Studio Ver4.2.1 for Windows 64-bit
---Gradle Version 6.7.1
---API 30

###困り事の詳細内容
Viewの配置として
TextInputLayout内にTextInputEditText(id:txti_Staff_No)を配置
TextView(id:txtv_staff_name)
ListView(id:lstv_staff_list)
Button(id:button)
Button(id:button2)
※以下にxml記載しました。

アプリ起動時ListView(id:lstv_staff_list)は非表示状態で
TextView(id:txtv_staff_name)をタップすると
ListView(id:lstv_staff_list)が表示されて
表示したListView(id:lstv_staff_list)で選択された項目を
TextView(id:txtv_staff_name)へ表示するようにしたいと思います。

なので、TextInputEditText(id:txti_Staff_No)にフォーカスが移った場合は
ListView(id:lstv_staff_list)は非表示にしたいのですが
それがうまく動作しません。

発生している問題

①起動直後にTextView(id:txtv_staff_name)をタップ
②ListView(id:lstv_staff_list)が非表示から表示に変更
③TextInputEditText(id:txti_Staff_No)をタップ

この操作をしてもTextInputEditText(id:txti_Staff_No)の
onClickイベントが発生しません。

いろいろと調べて試してみましたが
今のところ何をしてもイベントが発生せずに、
ListView(id:lstv_staff_list)の表示・非表示制御ができずにいます。

該当のソースコード

java
package jp.999.check_sipping;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import com.google.android.material.textfield.TextInputEditText;

import org.w3c.dom.Text;

import java.util.ArrayList;

public class k20_00_001 extends AppCompatActivity {

ListView lstv_id; private View.OnClickListener lstv_Listener = new View.OnClickListener() { @Override public void onClick(View v) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_k20_00_001); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // リスト項目をテスト用に準備 final ArrayList<String> data = new ArrayList<>(); data.add("Staff1"); data.add("Staff2"); data.add("Staff3"); data.add("Staff4"); data.add("Staff5"); data.add("Staff6"); data.add("Staff7"); data.add("Staff8"); data.add("Staff9"); data.add("Staff10"); data.add("Staff11"); ArrayAdapter<String> adapter = new ArrayAdapter<String >(this, android.R.layout.simple_list_item_1, data); lstv_id = findViewById(R.id.lstv_staff_list); lstv_id.setAdapter(adapter); lstv_id.setVisibility(View.VISIBLE); lstv_id.setVisibility(View.INVISIBLE); } public void onClick_Staff_No(View v) { // ******************************************************** // TextInputEditText(id:txti_Staff_No)をタップした時に以下の処理をしたい。 // ******************************************************** if (lstv_id.getVisibility() == View.VISIBLE) { staff_list_view_check(); } } public void onClick_Staff_Name(View v) { staff_list_view_check(); } public void staff_list_view_check(){ lstv_id = findViewById(R.id.lstv_staff_list); if (lstv_id.getVisibility() != View.VISIBLE) { lstv_id.setVisibility(View.VISIBLE); }else{ lstv_id.setVisibility(View.INVISIBLE); } } public void sign_in_click(View view){ Intent intent = new Intent(this, k20_00_002.class); startActivity(intent); } public void get_shipping_list(View view){ Intent intent = new Intent(this, k20_02_003.class); startActivity(intent); }

}

### 試したこと onCreateでsetOnClickListenerを使用しましたが 同じようにイベントが発生しません。 final TextInputEditText txti_id = findViewById(R.id.txti_Staff_No); txti_id.setOnClickListener(v -> { Log.d("debug", "txti_Staff_No, Perform action on click"); }); ### 補足情報(FW/ツールのバージョンなど) ```xml``` <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".k20_00_001"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" style="@style/Toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/color4" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navigationIcon="@drawable/upk_blue_shadow_50_16_" app:title="@string/app_name"> </androidx.appcompat.widget.Toolbar> <com.google.android.material.textfield.TextInputLayout android:id="@+id/txti_Staff_NoLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="5dp" android:layout_marginTop="5dp" android:layout_marginEnd="5dp" android:background="@drawable/shape_style_color1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/toolbar" app:layout_constraintTop_toBottomOf="@+id/toolbar"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/txti_Staff_No" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/staff_no_hint" android:inputType="text" android:onClick="onClick_Staff_No" android:paddingTop="0dp" android:paddingBottom="5dp" android:textSize="20sp" /> </com.google.android.material.textfield.TextInputLayout> <TextView android:id="@+id/txtv_staff_name" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginStart="5dp" android:layout_marginTop="5dp" android:layout_marginEnd="5dp" android:background="@drawable/shape_style_color1_border" android:hint="@string/staff_name_hint" android:onClick="onClick_Staff_Name" android:textAlignment="center" android:textColor="@color/color4" android:textColorHint="@color/color40" android:textSize="20sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/toolbar" app:layout_constraintTop_toBottomOf="@+id/txti_Staff_NoLayout" /> <Button android:id="@+id/button" android:layout_width="270dp" android:layout_height="80dp" android:layout_marginStart="24dp" android:layout_marginTop="20dp" android:layout_marginEnd="24dp" android:background="@drawable/shape_style_color2" android:onClick="sign_in_click" android:stateListAnimator="@null" android:text="@string/sign_in" android:textColor="@color/color4" android:textSize="24sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtv_staff_name" /> <Button android:id="@+id/button3" android:layout_width="270dp" android:layout_height="100dp" android:layout_marginStart="24dp" android:layout_marginTop="20dp" android:layout_marginEnd="24dp" android:background="@drawable/shape_style_color4" android:onClick="get_shipping_list" android:stateListAnimator="@null" android:text="@string/get_sipping_list" android:textColor="@color/color1" android:textSize="24sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button" /> <ListView android:id="@+id/lstv_staff_list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginStart="5dp" android:layout_marginEnd="100dp" android:background="@drawable/shape_style_list_frame_border" android:focusable="auto" android:focusableInTouchMode="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtv_staff_name" /> </androidx.constraintlayout.widget.ConstraintLayout>

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

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

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

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

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

K_3578

2021/06/08 05:31

ソースコード等はMarkdownのcode機能で囲んでください。 ```言語名 ソースコード ``` と言う形で囲みます
hoshi-takanori

2021/06/08 05:38

テキスト入力欄の onClick はテキスト入力欄自身が処理しますので、フォーカスが移った時に何かしたいなら setOnFocusChangeListener すれば良いのでは。
indy_papa

2021/06/08 05:53

k_3578さん  Markdownのcode機能使ってみました。  初投稿のため、ご迷惑おかけします。  ご指摘ありがとうございました。 hoshi-takanoriさん  アドバイスありがとうございます。  「onClick はテキスト入力欄自身が処理する」ということは知りませんでした。  私としては非常に貴重な情報です。  setOnFocusChangeListenerをどうすればよいのか理解していませんが  調べて挑戦してみます。  ありがとうございました。
K_3578

2021/06/08 06:02 編集

>質問者さん 今は居ませんけど、k_3578さんが増える可能性もあるのでなるべくIDはコピペしてください。 コメントも編集できます。
indy_papa

2021/06/08 06:02

hoshi-takanoriさん setOnFocusChangeListenerを使ってみたところ 望んでいた動作になりました!!! ありがとうございました!
indy_papa

2021/06/08 06:15

>K_3578さん IDのコピペ了解しました! 入力間違い大変恐縮です。
K_3578

2021/06/08 06:18

>質問者さん 解決されたのならhoshi-takanoriさんに回答として残して頂いてBAとするか、 許可を取った上で自己解決としてクローズしておいてください。
indy_papa

2021/06/08 07:01

>K_3578さん アドバイスありがとうございます。 クローズの件了解しましたが、 「hoshi-takanoriさんに回答として残して頂いてBAとするか・・・」 について理解ができません。 クローズ方法について記載されているページ等ありますか?
K_3578

2021/06/08 07:05

https://teratail.com/help/question-tips#questionTips4-1 この辺ですかね。 ここは追記・修正依頼のコメント欄ですが、ここに書いた事がたまたま当たって解決するときがあるので、 その場合はその解決方法をコメントしてくださった方に改めて回答として残していただければ ベストアンサーにできるので、そうして貰うと言うことです。 ただ、理由はユーザーさんによってバラバラですが、自己解決にしてくれていいと言ってくれる方も 居られるので、その場合は回答内で一言断りを入れておくのがマナーかと思っております。
K_3578

2021/06/08 07:37

>BAとは”ベストアンサー”なんですね!ありがとうございます。 すいません、わかりにくい表現をしてしまいました。こちらの落ち度です。 ユーザー間で直接連絡する方法はないですし、何かしらの回答が付いた後は このコメント欄はベストアンサー選択を依頼するコメント欄にもなりますので問題ないかと。 コメントの後、数日経ってもお返事が来ない、または前述したように自己解決で構わないと仰られたら そのように対応していただければと。
indy_papa

2021/06/08 07:50

>K_3578さん 丁寧な対応とお言葉恐縮です。 了解しました!!
indy_papa

2021/06/08 07:52

>hoshi-takanoriさん hoshi-takanoriさんのアドバイスのおかげで この質問内容が解決に至りました。 アドバイスの内容を回答として残していただけますでしょうか。 宜しくお願いします。
guest

回答1

0

ベストアンサー

テキスト入力欄の onClick はテキスト入力欄自身が処理しますので、フォーカスが移った時に何かしたいなら setOnFocusChangeListener すれば良いでしょう。

java

1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // 略 7 8 TextInputEditText txti_Staff_No = findViewById(R.id.txti_Staff_No); 9 txti_Staff_No.setOnFocusChangeListener(new View.OnFocusChangeListener() { 10 @Override 11 public void onFocusChange(View v, boolean hasFocus) { 12 if (hasFocus) { 13 // フォーカスが txti_Staff_No に移動した時の処理 14 } 15 } 16 }); 17 }

また、ラムダ式 を使うともっと簡潔に書くことができます。

java

1 TextInputEditText txti_Staff_No = findViewById(R.id.txti_Staff_No); 2 txti_Staff_No.setOnFocusChangeListener((v, hasFocus) -> { 3 if (hasFocus) { 4 // フォーカスが txti_Staff_No に移動した時の処理 5 } 6 });

投稿2021/06/08 09:04

hoshi-takanori

総合スコア7895

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

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

indy_papa

2021/06/14 01:21 編集

回答ありがとうございました。 また、より詳しい記入(ラムダ式の方法)いただき感謝します。 自分のコーディングと見比べ、 間違いないことも確認できて自信に繋がりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問