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

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

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

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

ダイアログ

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

Android Studio

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

Q&A

解決済

1回答

2423閲覧

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

aruko

総合スコア47

Java

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

ダイアログ

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

Android Studio

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

0グッド

0クリップ

投稿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

1public class MainActivity extends AppCompatActivity implements Runnable { 2 ImageView saru1,saru2; 3 int count,count_dialog; 4 Thread thread; 5 static int w,h;//画面サイズ取得 6 static boolean flag_count,flag_count_dialog; 7 boolean flag_anim1; 8 static int dialog_num; 9 10 EditText dc_ma_editText; 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 count = 0; 18 count_dialog=0; 19 flag_count=true; 20 flag_count_dialog=false; 21 dialog_num=0; 22 23 thread=null; 24} 25 public void onWindowFocusChanged(boolean hasFocus) { 26 super.onWindowFocusChanged(hasFocus); 27 View view = findViewById(R.id.ma_app_screen); 28 h = view.getHeight(); 29 w = view.getWidth(); 30 if (list_kaki_select.size() != 0) { 31 kaki_getXY(); 32 kaki_saru_keisan_animation(); 33 start(); 34 } 35 } 36 public void start(){ 37 if(thread==null){ 38 thread=new Thread(this); 39 thread.start(); 40 } 41 } 42 public void stop(){ 43 if(thread!=null){ 44 thread=null; 45 } 46 } 47 public void run() { 48 Thread thisThread=Thread.currentThread(); 49 final Handler mainHandler = new Handler(Looper.getMainLooper()); 50 while (thread!=null){ 51 if(flag_count){count++;} 52 if(flag_anim1==false&&flag_count_dialog){ 53 count_dialog++; 54 if(count_dialog==3) { 55 dialog_num++; 56 show_dialog(dialog_num); 57 flag_count_dialog = false; 58 count_dialog = 0; 59 flag_count=false; 60 } 61 } 62 mainHandler.post(() -> { 63 if(flag_anim1&&count>=6&&count%3==0&&count<=24){ 64 ma_tv[(count/3)-2].setVisibility(View.VISIBLE); 65 ma_tv[(count/3)-2].startAnimation(anim1); 66 if(count==24){flag_anim1=false;} 67 } 68 }); 69 try { 70 thread.sleep(1000); 71 } catch (InterruptedException e) { 72 } 73 } 74 } 75 76 public void show_dialog(int dialog_num){ 77 DialogFragment dialog=new MyDialogFragment(); 78 switch (dialog_num) { 79 case 1:dialog.show(getSupportFragmentManager(), "dialog1"); 80 break; 81 case 2:dialog.show(getSupportFragmentManager(),"dialog2"); 82 break; 83 case 3: 84 dc_ma_editText = findViewById(R.id.dc_ma_editText); 85 Bundle args = new Bundle(); 86 args.putString("Name", dc_ma_editText.getText().toString()); 87 dialog.setArguments(args); 88 dialog.show(getSupportFragmentManager(), "dialog3"); 89 break; 90 } 91 } 92 93}

MyDialogFragment.javaです。

java

1public class MyDialogFragment extends DialogFragment { 2 public Dialog onCreateDialog(Bundle savedInstanceState){ 3 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 4 switch(dialog_num){ 5 case 1:builder.setMessage("ぼうけんしてくれるかのう?") 6 //「はい」ボタンの設定 7 .setPositiveButton("する", new DialogInterface.OnClickListener() { 8 @Override 9 public void onClick(DialogInterface dialog, int which) { 10 flag_count = true; 11 flag_count_dialog = true; 12 } 13 }) 14 //「いいえ」ボタンの設定 15 .setNegativeButton("しない", new DialogInterface.OnClickListener() { 16 @Override 17 public void onClick(DialogInterface dialog, int which) { 18 flag_count_dialog = false; 19 } 20 }) 21 //「キャンセル」ボタンの設定 22 .setNeutralButton("キャンセル", new DialogInterface.OnClickListener() { 23 @Override 24 public void onClick(DialogInterface dialog, int which) { 25 flag_count = true; 26 flag_count_dialog = true; 27 } 28 }); 29 break; 30 case 2:LayoutInflater inflater=requireActivity().getLayoutInflater(); 31 builder.setView(inflater.inflate(R.layout.dialog_custom_ma0,null)) 32 //「OK」ボタンの設定 33 .setPositiveButton("OK", new DialogInterface.OnClickListener() { 34 @Override 35 public void onClick(DialogInterface dialog, int which) { 36 flag_count = true; 37 flag_count_dialog = true; 38 } 39 }); 40 break; 41 case 3: 42 Bundle args = requireArguments(); 43 String st=args.getString("Name"); 44 builder.setMessage("きょうからわしは、「"+st+"じい」じゃ。よろしくな!") 45 //「はい」ボタンの設定 46 .setPositiveButton("OK", new DialogInterface.OnClickListener() { 47 @Override 48 public void onClick(DialogInterface dialog, int which) { 49 flag_count = true; 50 flag_count_dialog = true; 51 } 52 }); 53 break; 54 } 55 return builder.create(); 56 } 57}

dialog_custom_ma0.xmlです。

java

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="300dp" 6 android:layout_height="wrap_content" 7 android:background="@color/white" 8 android:gravity="center" 9 android:orientation="vertical"> 10 11 <TextView 12 android:id="@+id/dc_ma_tv0" 13 android:layout_width="match_parent" 14 android:layout_height="wrap_content" 15 android:hint="8もじまで" 16 android:padding="10dp" 17 android:text="ありがとう。じゃあ、わしになまえをつけてくれるか。" 18 android:textSize="18sp" /> 19 20 <TextView 21 android:id="@+id/textView" 22 android:layout_width="match_parent" 23 android:layout_height="wrap_content" 24 android:gravity="center" 25 android:text="8もじまで" /> 26 27 <LinearLayout 28 android:layout_width="match_parent" 29 android:layout_height="match_parent" 30 android:gravity="center" 31 android:orientation="horizontal"> 32 33 <EditText 34 android:id="@+id/dc_ma_editText" 35 android:layout_width="200dp" 36 android:layout_height="wrap_content" 37 android:ems="10" 38 android:gravity="center" 39 android:inputType="textMultiLine" 40 android:maxLength="8" 41 android:maxLines="1" 42 android:textSize="24sp" /> 43 44 <TextView 45 android:id="@+id/dc_ma_tv1" 46 android:layout_width="wrap_content" 47 android:layout_height="wrap_content" 48 android:text="じい" 49 android:textColor="@color/black" 50 android:textSize="24sp" /> 51 </LinearLayout> 52 53</LinearLayout>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

過去質問を検索し、View(自作ダイアログのxml)経由でEditTextの入力文字を取得したらnullpointerExceptionは出なくなりましたが、取得文字がnullと出てしまうので、String stをstaticにしたら正しく取得できるようになりました。

投稿2021/12/21 07:30

aruko

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問