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

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

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

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

3035閲覧

dialog上のEditText取得時にnull objectエラー

msukalzx

総合スコア7

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2018/04/02 17:11

前提・実現したいこと

dialogで配置したeditTextの値を取得しようとしたときにnullpointexceptionが発生してしまいました。どのように解決すればいいですか?
コード中のコメントアウトしているif文は、コメントアウトを外すと機能し、Logが出力されました。
載せているコードは省略しています。

発生している問題・エラーメッセージ

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.widget.EditText.toString()' on a null object reference
// kotlin class SetDialog: DialogFragment(){ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = AlertDialog.Builder(getActivity()) val inflater = getActivity().getLayoutInflater() builder.setView(inflater.inflate(R.layout.s_dialog, null)) .setPositiveButton("Set") { dialog, id -> // if(tEditText==null){ // Log.d("tEditText"," is null") // }else{ tEditText.text.toString() //ここでnullエラーがでました // } } return builder.create() } } class MainActivity:AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) settingButton.setOnClickListener { SetDialog().show(supportFragmentManager, null) } } }

xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> 3 <EditText 4 android:id="@+id/tEditText" 5 android:inputType="text" /> 6</LinearLayout>

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

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

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

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

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

kakajika

2018/04/03 02:58 編集

tEditTextをレイアウト側と紐付けている処理が見当たりませんが、Kotlin Android Extensionsを使用されていますか?
msukalzx

2018/04/03 03:05

はい、使用しています。
guest

回答1

0

ベストアンサー

Fragment内でKotlin Android ExtensionsによりViewの取得を行う場合、Fragmentの getView() で返されるView(すなわち、Fragmentの onCreateView() で返したView)に対して検索が行われます。

ご提示のコードではtEditTextが所属するDialogのViewはFragmentに紐付いていませんので、所属するViewから直接tEditTextを取得するようにすればよいかと思います。

// 実装例 val view = inflater.inflate(R.layout.s_dialog, null) builder.setView(view) .setPositiveButton("Set") { dialog, id -> view.tEditText.text.toString() } return builder.create()

投稿2018/04/03 03:20

kakajika

総合スコア3131

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

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

msukalzx

2018/04/04 00:40

遅くなってすみません。 説明ありがとうございます。おかげさまで解決することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問