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

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

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

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

Android Studio

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

解決済

Android Studio:Dialogの表示について

sato_shoma
s.s

総合スコア12

Java

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

Android Studio

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

1回答

0評価

0クリップ

475閲覧

投稿2022/03/21 06:07

編集2022/03/21 21:33

前提

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

package jp.halo_sf.haloint; import android.database.Cursor; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; public class MainActivity extends AppCompatActivity { private DatabaseHelper _helper; private static RecyclerView rvNote; private static RecyclerViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //DatabaseHelperの生成処理。 _helper = new DatabaseHelper(MainActivity.this); //RecyclerViewの設定。 rvNote = findViewById(R.id.rvNote); rvNote.setLayoutManager(new LinearLayoutManager(MainActivity.this)); //DataBaseからデータを取得。 Cursor cursor = _helper.getData(); NoteManager noteManager = new NoteManager(); while (cursor.moveToNext()) { noteManager.addNoteItem(String.valueOf(cursor.getInt(0)), cursor.getString(1), cursor.getString(2)); } noteManager.addToMapData(); cursor.close(); adapter = new RecyclerViewAdapter(noteManager.getNoteItems()); rvNote.setAdapter(adapter); }

RecyclerViewAdapter.java

package jp.halo_sf.haloint; import androidx.fragment.app.FragmentActivity; public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerListViewHolder> { @Override public void onBindViewHolder(@NonNull RecyclerListViewHolder holder, int position) { holder._tvTitle.setText(titles.get(position)); holder._tvText.setText(texts.get(position)); holder._iBtnDeleteL.setOnClickListener(view -> { DialogFragmentCheckingDelete dialogFragment = new DialogFragmentCheckingDelete(); //エラー文に記載されている箇所。 dialogFragment.show(new FragmentActivity().getSupportFragmentManager(), "DialogFragmentCheckingDelete"); }); } }

試したこと

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)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

hoshi-takanori

2022/03/21 08:02

> MainActivityにダイアログを表示するメソッドを記入 でいけると思いますけど。(まさか new MainActivity() してそのメソッドを呼び出したとか?)
sato_shoma

2022/03/21 08:25 編集

そのまさかです。本当に未熟なものですみません。私もそれが問題なのではないかと思い、requireActivity();等のメソッドを試しても見たのですがこのメソッドがどうもRecyclerView.Adapterでは使えないみたいで…もし良ければ、どうすれば良いのかお教え願えませんでしょうか?
hoshi-takanori

2022/03/21 08:34

RecyclerViewAdapter に MainActivity の参照を持たせれば良いかと。 (具体的なコードを知りたければ、MainActivity で RecyclerViewAdapter を生成してるあたりのコードをお示しください。)
sato_shoma

2022/03/21 09:05

遅くなってしまってすみません。今コードを追加したのでご覧くださると幸いです。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android Studio

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