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

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

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

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

Android Studio

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

Q&A

0回答

387閲覧

一定回数ボタンをクリックした際にダイアログを表示させたいがアプリが落ちる

tenamuu

総合スコア1

Java

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

Android Studio

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

0グッド

0クリップ

投稿2022/11/28 03:35

前提

Android Studio / Java / 単語帳アプリを制作

実現したいこと

5回ボタン(btnReg)をクリックしたらダイアログを表示させたい

発生している問題・エラーメッセージ

ボタンをクリックするとアプリが落ちる

エラーメッセージ Caused by: java.lang.ClassCastException: com.example.pt.MissionActivity cannot be cast to android.view.View$OnClickListener

ソースコード

Java

1// 一部省略 2public class MissionActivity extends AppCompatActivity { 3 4 Button btnReg; 5 private int id = 0; 6 private EditText etKr = null; 7 private EditText etJp = null; 8 private EditText etTag = null; 9 private EditText etMemo = null; 10 int count=0; 11 @Override 12 protected void onCreate(Bundle savedInstanceState){ 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_mission); 15 btnReg.setOnClickListener((View.OnClickListener) this); 16 // ビューオブジェクトを取得 17 18 // ビューオブジェクトを取得 19 etKr = findViewById(R.id.etKr); 20 etJp = findViewById(R.id.etJp); 21 etTag = findViewById(R.id.etTag); 22 etMemo = findViewById(R.id.etMemo); 23 24 // インテントを取得 25 Intent intent = getIntent(); 26 27 //intentのデータを取得(データがない場合、第2引数の 0 が返る) 28 id = intent.getIntExtra(DBEntry._ID,0); 29 String kr = intent.getStringExtra(DBEntry.COLUMN_NAME_KR); 30 String jp = intent.getStringExtra(DBEntry.COLUMN_NAME_JP); 31 String tag = intent.getStringExtra(DBEntry.COLUMN_NAME_TAG); 32 String memo = intent.getStringExtra(DBEntry.COLUMN_NAME_MEMO); 33 34 // データ更新の場合 35 if (id > 0){ 36 etKr.setText(kr); 37 etJp.setText(jp); 38 etTag.setText(tag); 39 etMemo.setText(memo); 40 } 41 } 42 43 // 「登録」ボタン タップ時に呼び出されるメソッド 44 45 public void btnReg_onClick(View view) { 46 //カウント 47 count++; 48 // ヘルパーを準備 49 DatabaseHelper helper = new DatabaseHelper(this); 50 51 // 入力欄に入力されたタイトルとコンテンツを取得 52 String kr = etKr.getText().toString(); 53 String jp = etJp.getText().toString(); 54 String tag = etTag.getText().toString(); 55 String memo = etMemo.getText().toString(); 56 57 // 書き込みモードでデータベースをオープン 58 try (SQLiteDatabase db = helper.getWritableDatabase()) { 59 60 // 入力されたタイトルとコンテンツをContentValuesに設定 61 // ContentValuesは、項目名と値をセットで保存できるオブジェクト 62 ContentValues cv = new ContentValues(); 63 cv.put(DBEntry.COLUMN_NAME_KR, kr); 64 cv.put(DBEntry.COLUMN_NAME_JP, jp); 65 cv.put(DBEntry.COLUMN_NAME_TAG, tag); 66 cv.put(DBEntry.COLUMN_NAME_MEMO, memo); 67 68 if (id == 0) { 69 // データ新規登録 70 db.insert(DBEntry.TABLE_NAME, null, cv); 71 } else { 72 // データ更新 73 db.update(DBEntry.TABLE_NAME, cv, DBEntry._ID + " = ?", new String[]{String.valueOf(id)}); 74 } 75 } 76 77 finish(); 78 79 if(5<=count){ 80 //ダイアログを表示 81 DialogFragment dialogFragment = new myDialogFragment(); 82 dialogFragment.show(getSupportFragmentManager(), "my_dialog"); 83 } 84 } 85 86 87 }

xml

1 //登録ボタン 2 3 <Button 4 android:id="@+id/btn_reg" 5 android:enabled="true" 6 android:onClick="btnReg_onClick" 7 android:layout_width="100dp" 8 android:layout_height="wrap_content" 9 android:layout_gravity="center_horizontal" 10 android:layout_marginTop="15dp" 11 android:background="@drawable/shape_style" 12 android:text="登録" 13 android:textSize="23sp" 14 android:textColor="@color/dark" 15 app:backgroundTint="@null" 16 tools:ignore="OnClick" /> 17

試したこと

補足情報(FW/ツールのバージョンなど)

countを追加するまでは正常に作動していました。
初歩的なミスが原因かとは思いますが、どなたかご教示お願い致します。

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

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

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

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

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

jimbe

2022/11/28 04:31

原因はちゃんとエラーメッセージに出ていますので、該当箇所を探すだけでしょう。
hoshi-takanori

2022/11/28 06:52

layout xml に android:onClick="btnReg_onClick" と書いてるので、 btnReg.setOnClickListener((View.OnClickListener) this); は不要ですね。(というか、btnReg が初期化されてないような…。)
tenamuu

2022/11/28 12:49

お二方ともコメントありがとうございます。 ご指摘頂いた箇所を削除してbtnRegを初期化したところエラーは解消しました。 ただcountとdialogがうまく動かず、ボタンを5回押しても何も起こりません。これはどこに原因があると考えられるのでしょうか? 重ねての質問で大変厚かましいとは存じますが、何かヒントを頂けましたら幸いです。
jimbe

2022/11/28 12:53 編集

finish しているからでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問