###前提・実現したいこと
androidstudioでアプリを製作しています。
SQLiteに、画面で入力されたデータを保存し、リセットボタンでそのデータをクリアします。
データが保存されると件数がカウントアップして表示され、クリアされると0が表示されるようにしたいです。(データの件数を数えるのはできています)
###発生している問題・エラーメッセージ
リセットボタンを押すと確認ダイアログ(OK/キャンセル)を出しOKを押すとSQLiteのデータを消した後、件数をTextViewに再び表示しなおしたいのですが、ダイアログを表示するのに別のクラスを呼び出して使っているためか、うまく表示させることができません。OKを押した後にデータのクリアはされるのですが、表示の部分でエラーが出て止まってしまいます。
###エラーメッセージ
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.root.qrsystemtest2, PID: 12511 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:117) at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:149) at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:29) at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:54) at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:31) at android.support.v7.app.AppCompatDelegateImplN.<init>(AppCompatDelegateImplN.java:31) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:198) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:183) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) at com.example.root.qrsystemtest2.SyukkaActivity.GetRecordNum(SyukkaActivity.java:164) at com.example.root.qrsystemtest2.DialogActivity$2.onClick(DialogActivity.java:54) at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Application terminated.
###該当のソースコード
入力画面のソース
SyukkaActivity.class
java
1public class SyukkaActivity extends AppCompatActivity{ 2 int count = 0; 3 4 @Override 5 protected void onCreate(@Nullable Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_syukka); 8 9 GetRecordNum(this); 10 11 EditText Syomikigen = (EditText) findViewById(R.id.editText5); 12 Syomikigen.setOnEditorActionListener(new TextView.OnEditorActionListener() { 13 @Override 14 public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { 15 if(keyEvent != null && keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 16 if(keyEvent.getAction() == KeyEvent.ACTION_UP) { 17 RegistMikakutei(); 18 GetRecordNum(SyukkaActivity.this); 19 Toast.makeText(getApplicationContext(), "未確定情報として一件登録しました", Toast.LENGTH_SHORT).show(); 20 21 ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(textView.getWindowToken(), 0); 22 } 23 return true; 24 } 25 return false; 26 } 27 }); 28 Button btn = (Button) findViewById(R.id.button); 29 btn.setOnClickListener(new View.OnClickListener() { 30 @Override 31 public void onClick(View view) { 32 DialogActivity dialogActivity = new DialogActivity(); 33 dialogActivity.Dialog(SyukkaActivity.this,1, "Syukka","警告","編集中の内容が破棄されますがよろしいですか"); 34 } 35 }); 36 } 37 38public void GetRecordNum(Context context) { 39 MyOpenHelper helper = new MyOpenHelper(context); 40 final SQLiteDatabase db = helper.getWritableDatabase(); 41 long MikakuteirecodeCount = DatabaseUtils.queryNumEntries(db, "Mikakutei"); 42 long KakuteirecodeCount = DatabaseUtils.queryNumEntries(db, "Kakutei"); 43 44 TextView mikakutei = (TextView) findViewById(R.id.mikakutei); //エラー箇所はここ 45 TextView kakutei = (TextView) findViewById(R.id.kakutei); 46 String mikakutei_kensu = String.valueOf(MikakuteirecodeCount); 47 String kakutei_kensu = String.valueOf(KakuteirecodeCount); 48 mikakutei.setText(mikakutei_kensu); 49 kakutei.setText(kakutei_kensu); 50 db.close(); 51 } 52
ダイアログ用のクラス
DialogActivity.class
java
1public class DialogActivity { 2 Context con; 3 4 public void Dialog(Context context, int i, String gamen, String title, String message) { 5 con = context; 6 switch (i) { 7 case 0: 8 KakuninDialog(title, message); 9 break; 10 case 1: 11 SentakuDialog(gamen, title, message); 12 break; 13 } 14 } 15 16 private void KakuninDialog(String title, String message) { 17 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(con); 18 alertDialog.setTitle(title); //タイトル設定 19 alertDialog.setMessage(message); //内容(メッセージ)設定 20 21 // OKボタンの設定 22 alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 23 public void onClick(DialogInterface dialog, int which) { 24 } 25 }); 26 } 27 28 private void SentakuDialog(final String gamen, String title, String message) { 29 AlertDialog.Builder alertDialog = new AlertDialog.Builder(con); 30 alertDialog.setTitle(title); //タイトル設定 31 alertDialog.setMessage(message); //内容(メッセージ)設定 32 33 // OKボタンの設定 34 alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 35 public void onClick(DialogInterface dialog, int which) { 36 if (gamen.equals("Syukka")) { 37 MyOpenHelper helper = new MyOpenHelper(con); 38 SyukkaActivity syukkaActivity = new SyukkaActivity(); 39 final SQLiteDatabase db = helper.getWritableDatabase(); 40 helper.ResetButton(db); 41 syukkaActivity.GetRecordNum(con); //エラー箇所はここ 42 Toast.makeText(con, "未確定情報をクリアしました", Toast.LENGTH_SHORT).show(); 43 } 44 } 45 }); 46 47 // キャンセルボタンの設定 48 alertDialog.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() { 49 public void onClick(DialogInterface dialog, int which) { 50 51 } 52 }); 53 alertDialog.create(); 54 alertDialog.show(); 55 } 56 57}
###試したこと
TextViewの初期化の位置を変えたりなど試しましたが同じエラーが出てしまいます。
###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio 3.0
android 6.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/29 04:07
2017/11/29 04:36
2017/11/29 04:52
2017/11/29 07:48