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

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

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

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

Q&A

解決済

2回答

6098閲覧

ボタン処理のIllegalStateExceptionエラー

退会済みユーザー

退会済みユーザー

総合スコア0

Android Studio

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

0グッド

0クリップ

投稿2017/06/25 00:32

###前提・実現したいこと
実行させたアプリのボタンの処理を実行させる。

###発生している問題・エラーメッセージ
実行させたアプリのボタンをタップすると、エラーが発生しアプリが落ちてしまいます。

06-25 08:51:26.463 8106-8106/com.example.---.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.kaikoro.myapplication, PID: 8106 java.lang.IllegalStateException: Could not find method bottomBtn(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button3' at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) at android.view.View.performClick(View.java:5230) at android.view.View$PerformClick.run(View.java:21212) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5595) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

###該当のソースコード
MainActivity

Java

1import android.support.v7.app.AppCompatActivity; 2import android.os.Bundle; 3import android.util.Log; 4import android.view.GestureDetector; 5import android.view.MotionEvent; 6 7public class MainActivity extends AppCompatActivity { 8 9 GestureDetector gestureDetector; 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 16 //ジェスチャーのインスタンス化 17 gestureDetector = new GestureDetector(this, mOnGestureListener); 18 19 } 20 21 // タッチイベント 22 @Override 23 public boolean onTouchEvent(MotionEvent event) { 24 return gestureDetector.onTouchEvent(event); 25 } 26 27 // タッチイベントのリスナー 28 final GestureDetector.SimpleOnGestureListener mOnGestureListener = new GestureDetector.SimpleOnGestureListener() { 29 @Override 30 public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { 31 32 try { 33 Log.d("Listener", "onFling"); 34 return true; 35 } catch (Exception e) { 36 return false; 37 } 38 } 39 40 @Override 41 public void onLongPress(MotionEvent event) { 42 Log.d("Listener", "onLongPress"); 43 } 44 }; 45 46 public void bottomBtn() { 47 Log.d("button", "bottonBtn"); 48 } 49}

activity_main.xml

XML

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_main" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 tools:context="com.example.---.myapplication.MainActivity"> 12 13 <LinearLayout 14 android:layout_width="match_parent" 15 android:layout_height="match_parent" 16 android:layout_weight="1" 17 android:orientation="vertical"> 18 19 <Button 20 android:id="@+id/button1" 21 android:layout_width="match_parent" 22 android:layout_height="match_parent" 23 android:layout_weight="1" 24 android:text="Button" 25 android:textSize="20dp" /> 26 27 <Button 28 android:id="@+id/button2" 29 android:layout_width="match_parent" 30 android:layout_height="match_parent" 31 android:layout_weight="1" 32 android:text="Button" 33 android:textSize="20dp" /> 34 35 <Button 36 android:id="@+id/button3" 37 android:layout_width="match_parent" 38 android:layout_height="match_parent" 39 android:layout_weight="1" 40 android:onClick="bottomBtn" 41 android:text="Button" 42 android:textSize="20dp" /> 43 44 </LinearLayout> 45 46</LinearLayout>

###試したこと
疑問に思いonTouchEventを動かしてみましたが、エラーは出ず、Log.d()も呼び出さないまま、アプリも落ちませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
環境
Windows 10
Android studio(2.3.3)
Gradle 3.2

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

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

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

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

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

guest

回答2

0

実行させたアプリのボタンをタップ

ボタンのリンクが貼ってありますがその通りにやればいいだけでは
https://developer.android.com/reference/android/widget/Button.html

<Button android:id="@+id/button_id" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/self_destruct" />
final Button button = findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Code here executes on main thread after user presses button } });

投稿2017/06/25 01:09

aja

総合スコア3733

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

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

退会済みユーザー

退会済みユーザー

2017/06/25 07:11

こちらも、いいですね!参考にさせて頂きます。
guest

0

ベストアンサー

xmlのButtonタグのonClick属性にはViewを引数に持つメソッドを指定しないといけません。
bottomBtnメソッドの引数にViewがありません。

投稿2017/06/25 00:49

yona

総合スコア18155

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

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

退会済みユーザー

退会済みユーザー

2017/06/25 01:02

うっかりミスですね。引数を指定したら解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問