前提
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を追加するまでは正常に作動していました。
初歩的なミスが原因かとは思いますが、どなたかご教示お願い致します。
あなたの回答
tips
プレビュー