前提
Android StudioでJavaを使ってメモ帳アプリを作っています。作成してメモを削除するときに、本当に削除するか確認するダイアログを出したいのですがjava.lang.IllegalStateExceptionが出て、うまくいきません。
実現したいこと
- ダイアログの実装
発生している問題・エラーメッセージ
E/AndroidRuntime: FATAL EXCEPTION: main Process: jp.halo_sf.haloint, PID: 22128 java.lang.IllegalStateException: FragmentManager has not been attached to a host. at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1880) at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:329) at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:294) at androidx.fragment.app.DialogFragment.show(DialogFragment.java:260) at jp.halo_sf.haloint.RecyclerViewAdapter.lambda$onBindViewHolder$0(RecyclerViewAdapter.java:42) at jp.halo_sf.haloint.RecyclerViewAdapter$$ExternalSyntheticLambda0.onClick(Unknown Source:0) at android.view.View.performClick(View.java:7463) at android.view.View.performClickInternal(View.java:7440) at android.view.View.access$3600(View.java:825) at android.view.View$PerformClick.run(View.java:28414) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:8240) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:979)
該当のソースコード
MainActivity.java
1 2package jp.halo_sf.haloint; 3 4import android.database.Cursor; 5import android.os.Bundle; 6 7import androidx.appcompat.app.AppCompatActivity; 8import androidx.recyclerview.widget.LinearLayoutManager; 9import androidx.recyclerview.widget.RecyclerView; 10 11public class MainActivity extends AppCompatActivity { 12 private DatabaseHelper _helper; 13 private static RecyclerView rvNote; 14 private static RecyclerViewAdapter adapter; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 //DatabaseHelperの生成処理。 22 _helper = new DatabaseHelper(MainActivity.this); 23 24 //RecyclerViewの設定。 25 rvNote = findViewById(R.id.rvNote); 26 rvNote.setLayoutManager(new LinearLayoutManager(MainActivity.this)); 27//DataBaseからデータを取得。 28 Cursor cursor = _helper.getData(); 29 NoteManager noteManager = new NoteManager(); 30 while (cursor.moveToNext()) { 31 noteManager.addNoteItem(String.valueOf(cursor.getInt(0)), cursor.getString(1), cursor.getString(2)); 32 } 33 noteManager.addToMapData(); 34 cursor.close(); 35 adapter = new RecyclerViewAdapter(noteManager.getNoteItems()); 36 rvNote.setAdapter(adapter); 37 } 38
RecyclerViewAdapter.java
1package jp.halo_sf.haloint; 2 3import androidx.fragment.app.FragmentActivity; 4 5public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerListViewHolder> { 6 @Override 7 public void onBindViewHolder(@NonNull RecyclerListViewHolder holder, int position) { 8 holder._tvTitle.setText(titles.get(position)); 9 holder._tvText.setText(texts.get(position)); 10 11 holder._iBtnDeleteL.setOnClickListener(view -> { 12 DialogFragmentCheckingDelete dialogFragment = new DialogFragmentCheckingDelete(); 13//エラー文に記載されている箇所。 14 dialogFragment.show(new FragmentActivity().getSupportFragmentManager(), 15"DialogFragmentCheckingDelete"); 16 }); 17 } 18} 19 20
試したこと
getSupportFragmentManagerをFragmentActivityをインスタンス化して取得しているからだと思い、MainActivityにダイアログを表示するメソッドを記入し、そこで処理を行ってみましたが全く状況が変わらなかったので元に戻しました。
おそらくgetFragmentManagerが関係していると思うのですが…何か分かることがあれば、些細な事でも良いのでお教えいただけますと幸いです。何卒宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
Android Studio Bumblebee | 2021.1.1 Patch 2
Build #AI-211.7628.21.2111.8193401, built on February 17, 2022
ランタイム・バージョン: 11.0.11+9-b60-7590822 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry: external.system.auto.import.disabled=true
Non-Bundled Plugins: dev.polek.adbwifi (1.2.4), org.jetbrains.kotlin (211-1.6.10-release-923-AS7442.40)

回答1件
あなたの回答
tips
プレビュー