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

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

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

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

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Android Studio

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

解決済

ダイアログにあるEditTextに入力した文字を、次のダイアログ内で表示したい。

aruko
aruko

総合スコア45

Java

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

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Android Studio

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

1回答

0評価

0クリップ

355閲覧

投稿2021/12/20 07:41

androidstudioでゲーム作りの途中です。
自作アラートダイアログ(2つ目のダイアログ)の中のEditTextに文字を入力してOKボタンを押すと、次のアラートダイアログ(3つ目のダイアログ)が表れ、そこに入力した文字が出るようにしたいです。
自作アラートダイアログは、レイアウトファイルで作ったもので、次のアラートダイアログは普通のダイアログです。
MainActivity.java
MyDialogFragment.java
activity_main.xml
dialog_cystom_ma0.xml・・・自作アラートダイアログ用
があります。

実行時エラーになり、

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

at tmaruko.okura.jiisan2.MainActivity.show_dialog(MainActivity.java:173) at tmaruko.okura.jiisan2.MainActivity.run(MainActivity.java:140)

と出て、3つ目のダイアログが表示されないでそのまま画面が消えます。
エラー部分は、 **args.putString("Name", dc_ma_editText.getText().toString());**というところです。
なので、
getText()するviewを、activity_mainにEditTextを作って、このままのコードで実行するとちゃんとできました。
違いは、dialig_custom_ma0.xml(自作ダイアログ)のEditTextからgetText()するか、レイアウト上のEditTextからgetText()するかです。
後者はできますが、前者だとエラーになります。
教えていただきたいです。
よろしくお願いします。

MainActivity.javaです。(長いので関係ある部分のみです)

java

public class MainActivity extends AppCompatActivity implements Runnable { ImageView saru1,saru2; int count,count_dialog; Thread thread; static int w,h;//画面サイズ取得 static boolean flag_count,flag_count_dialog; boolean flag_anim1; static int dialog_num; EditText dc_ma_editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); count = 0; count_dialog=0; flag_count=true; flag_count_dialog=false; dialog_num=0; thread=null; } public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); View view = findViewById(R.id.ma_app_screen); h = view.getHeight(); w = view.getWidth(); if (list_kaki_select.size() != 0) { kaki_getXY(); kaki_saru_keisan_animation(); start(); } } public void start(){ if(thread==null){ thread=new Thread(this); thread.start(); } } public void stop(){ if(thread!=null){ thread=null; } } public void run() { Thread thisThread=Thread.currentThread(); final Handler mainHandler = new Handler(Looper.getMainLooper()); while (thread!=null){ if(flag_count){count++;} if(flag_anim1==false&&flag_count_dialog){ count_dialog++; if(count_dialog==3) { dialog_num++; show_dialog(dialog_num); flag_count_dialog = false; count_dialog = 0; flag_count=false; } } mainHandler.post(() -> { if(flag_anim1&&count>=6&&count%3==0&&count<=24){ ma_tv[(count/3)-2].setVisibility(View.VISIBLE); ma_tv[(count/3)-2].startAnimation(anim1); if(count==24){flag_anim1=false;} } }); try { thread.sleep(1000); } catch (InterruptedException e) { } } } public void show_dialog(int dialog_num){ DialogFragment dialog=new MyDialogFragment(); switch (dialog_num) { case 1:dialog.show(getSupportFragmentManager(), "dialog1"); break; case 2:dialog.show(getSupportFragmentManager(),"dialog2"); break; case 3: dc_ma_editText = findViewById(R.id.dc_ma_editText); Bundle args = new Bundle(); args.putString("Name", dc_ma_editText.getText().toString()); dialog.setArguments(args); dialog.show(getSupportFragmentManager(), "dialog3"); break; } } }

MyDialogFragment.javaです。

java

public class MyDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState){ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); switch(dialog_num){ case 1:builder.setMessage("ぼうけんしてくれるかのう?") //「はい」ボタンの設定 .setPositiveButton("する", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { flag_count = true; flag_count_dialog = true; } }) //「いいえ」ボタンの設定 .setNegativeButton("しない", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { flag_count_dialog = false; } }) //「キャンセル」ボタンの設定 .setNeutralButton("キャンセル", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { flag_count = true; flag_count_dialog = true; } }); break; case 2:LayoutInflater inflater=requireActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.dialog_custom_ma0,null)) //「OK」ボタンの設定 .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { flag_count = true; flag_count_dialog = true; } }); break; case 3: Bundle args = requireArguments(); String st=args.getString("Name"); builder.setMessage("きょうからわしは、「"+st+"じい」じゃ。よろしくな!") //「はい」ボタンの設定 .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { flag_count = true; flag_count_dialog = true; } }); break; } return builder.create(); } }

dialog_custom_ma0.xmlです。

java

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="300dp" android:layout_height="wrap_content" android:background="@color/white" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/dc_ma_tv0" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="8もじまで" android:padding="10dp" android:text="ありがとう。じゃあ、わしになまえをつけてくれるか。" android:textSize="18sp" /> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="8もじまで" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal"> <EditText android:id="@+id/dc_ma_editText" android:layout_width="200dp" android:layout_height="wrap_content" android:ems="10" android:gravity="center" android:inputType="textMultiLine" android:maxLength="8" android:maxLines="1" android:textSize="24sp" /> <TextView android:id="@+id/dc_ma_tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="じい" android:textColor="@color/black" android:textSize="24sp" /> </LinearLayout> </LinearLayout>

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Android Studio

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