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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

2回答

4050閲覧

AndroidStudioでのメモ帳でEditTextに入力したメモをButtonでLinearLayoutに表示したいのですが、表示ができません。

edoooooo

総合スコア476

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2016/10/02 14:56

編集2016/10/03 05:50

AndroidStudioでのメモ帳でEditTextに入力したメモをButtonでLinearLayoutに表示したいのですが、表示ができません。
このコードはFragmentを使ってfragment_my_fragment2.xmlから、このfragment_myfragment2.xmlのページに飛ぶようにしているのですが、Activityしか使わない同じ機能のアプリを作成した時には、表示ができていました。
何故できないのかを教えていただけないでしょうか。どうぞよろしくお願いします。

//MyFragment2です。

java

1package com.example.kanehiro.fragmentapplication; 2 3import android.os.Bundle; 4import android.support.v4.app.Fragment; 5import android.support.v4.app.FragmentManager; 6import android.view.LayoutInflater; 7import android.view.View; 8import android.view.ViewGroup; 9import android.widget.Button; 10import android.widget.EditText; 11import android.widget.LinearLayout; 12import android.widget.TextView; 13import android.widget.Toast; 14 15import java.util.Calendar; 16 17public class MyFragment2 extends Fragment implements View.OnClickListener { 18 19 //とりあえずここにさらなるステップの変数 20 private EditText mInputMessage; 21 private Button mSendMessage; 22 private LinearLayout mMessageLog; 23 //private TextView mMemoMessage; 24 25 public MyFragment2() { 26 27 } 28 @Override 29 public View onCreateView(LayoutInflater inflater, ViewGroup container, 30 Bundle savedInstanceState) { 31 View view=inflater.inflate(R.layout.fragment_my_fragment2,container,false); 32 33 //何に使うのかわからん Button btn = (Button) view.findViewById(R.id.button); 34 35 view.findViewById(R.id.send_message).setOnClickListener(this); 36 37 /** @Override 38 public void onClick(View v){ 39 40 41 } 42 }); 43 **/ 44 45 return view; 46 } 47 48 @Override 49 public void onClick(View v) { 50 //SENDボタンが押された時の処理 51 52 53//ここから下のコードをここに移動させました。!!!!!!!!!!!!! 54 55 56 57 // ActivityからFragmentを取得 58 FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 59 Fragment fragment = fragmentManager.findFragmentById(R.id.send_message); 60 61 // FragmentのViewを取得 62 View view = fragment.getView(); 63 64 65 //ここがNullPointらしいです。!!!!!!!!!!!!!!!!!!!! 66 mInputMessage = (EditText)view.findViewById(R.id.input_message);//ユーザーが入力するフィールド 67 mSendMessage = (Button) view.findViewById(R.id.send_message);//SENDボタン 68 mMessageLog = (LinearLayout)view.findViewById(R.id.message_log);//入力履歴を表示するレイアウト 69 // mMemoMessage = (TextView) view.findViewById(R.id.memo_message);//メモの履歴 70 if(v.equals(mSendMessage)) { 71 72 73 74//ここまでです。!!!!!!!!!!!!!!!! 75 76 77//上のコードの塊がこの下の行より下にあったため、このString inputText=mI・・・の行がエラーとなっていました。 そのため上に移動しました。!!!!!!!!!!! 78 79その結果、 //ここがNullPointらしいです。!!!!!!!!!!!!!!!!!!!!と書いてある下の行のコードがエラーログの結果の通り、NullPointerとなりました。 80 81 String inputText=mInputMessage.getText().toString(); 82 83 84 if(inputText==null||inputText.length()==0){ 85 86 Toast.makeText(getActivity(),"文字が入力されていません",Toast.LENGTH_SHORT).show(); 87 }else { 88 //新しくエラーを消すために作った場所 89 //XMLのViewを初期化する 90 91 92 //この次はデータベースや 93 mSendMessage.setOnClickListener(this); 94 95 //--時間を取得 96 Calendar cal= Calendar.getInstance(); 97 int month = cal.get(Calendar.MONTH) + 1; 98 int day = cal.get(Calendar.DATE); 99 int hour=cal.get(Calendar.HOUR);//時 100 int minute=cal.get(Calendar.MINUTE);//分 101 String answer; 102 answer=String.format(" %1$d/%2$d %3$d:%4$d ",month,day,hour,minute); 103 104 //--ここまでは、時間 105 106 TextView memoMessage = new TextView(getActivity()); 107 108 109 memoMessage.setText(answer+inputText); 110 mMessageLog.addView(memoMessage, 0); 111 mInputMessage.setText(""); 112 } 113 } 114 115 116 } 117} 118 119 120

fragment_my_fragment2.xmlです。

java

1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:gravity="center" 7 tools:context="com.example.kanehiro.fragmentapplication.MyFragment2"> 8 9 <EditText 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:id="@+id/input_message" 13 android:layout_alignParentLeft="true" 14 android:layout_alignParentStart="true" 15 android:layout_toLeftOf="@+id/send_message" 16 android:layout_toStartOf="@+id/send_message" /> 17 18 <Button 19 android:id="@+id/send_message" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:layout_alignParentEnd="true" 23 android:layout_alignParentRight="true" 24 android:text="SEND"/> 25 26 <ScrollView 27 android:layout_width="fill_parent" 28 android:layout_height="fill_parent" 29 android:layout_alignParentLeft="true" 30 android:layout_alignParentStart="true" 31 android:layout_below="@+id/input_message"> 32 33 <LinearLayout 34 android:layout_width="fill_parent" 35 android:layout_height="wrap_content" 36 android:orientation="vertical" 37 android:id="@+id/message_log"> 38 39 <!-- <TextView 40 android:id="@+id/memo_message" 41 android:layout_width="wrap_content" 42 android:layout_height="wrap_content" 43 android:layout_gravity="start" 44 android:text="memo一覧"/> 45 46 --> 47 48 </LinearLayout> 49 </ScrollView> 50 51</RelativeLayout> 52 53

エラーログです。

java

110-03 12:41:30.515 11248-11248/? E/AndroidRuntime: FATAL EXCEPTION: main 210-03 12:41:30.515 11248-11248/? E/AndroidRuntime: java.lang.NullPointerException 310-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at com.example.kanehiro.fragmentapplication.MyFragment2.onClick(MyFragment2.java:57) 410-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.view.View.performClick(View.java:4147) 510-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:17161) 610-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:615) 710-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92) 810-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:213) 910-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4786) 1010-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 1110-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 1210-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 1310-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 1410-03 12:41:30.515 11248-11248/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 15

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

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

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

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

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

guest

回答2

0

ベストアンサー

view.findViewById(R.id.send_message).setOnClickListenerで空のリスナーを渡しているからですよ。
渡すのはFragmentに実装したリスナーなのでthisを渡す必要があります。

投稿2016/10/03 02:05

yona

総合スコア18155

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

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

edoooooo

2016/10/03 03:02

ありがとうございます。 view.findViewById(R.id.send_message).setOnClickListener(new View.OnClickListener(this){ このようにするとエラーが出てしまうのですが、どうすればいいでしょうか?
yona

2016/10/03 03:13

Javaの基本について勉強すればわかりますよ。 new View.OnClickListenerは不要です。 setOnClickListenerにthisをそのまま渡せばいいです。
edoooooo

2016/10/03 03:46

エラーログにNullPointerが出たので、コードをみていたら原因がコードの順番だと思い並び替えをしたのですが、NullPointerが消えません。 MyFragment2のコードを新しく変えました。 NullPointerの原因を教えていただけないでしょうか。よろしくお願いします。
yona

2016/10/03 04:23

何をしたらNullPointerが出たのかを詳しく書いてください。 また、エラーになったならエラーログを追記してください。
edoooooo

2016/10/03 05:48

エラーログと、どのコードをどの場所に移動したのかを質問文のコードに記載しました。 どうぞよろしくお願いします。
yona

2016/10/03 05:53

onClickでfragmentを探す処理を書いていますが不要です。 探しているfragment内のメソッドなので直接getViewを読んでください。 また、当初の質問とは異なるような質問の修正はやめたほうが良いです。
edoooooo

2016/10/03 06:02

申し訳ありませんでした。 直接getViewを読んだところ望んでいた実行ができました。 ありがとうございました。
guest

0

ぶっちゃけonClickの中がいろいろおかしいです。
if(v.equals(mSendMessage))が通って中に入るなら、mSendMessageはnullでないViewのはず。なのにその次であたかもStringのように使ってます。この段階でコンパイルエラーでは?

投稿2016/10/02 16:59

swordone

総合スコア20649

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

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

edoooooo

2016/10/03 01:32

ありがとうございます。 コンパイルエラーはないのですが、 コードを変えてみたところ、エラーログには E/jdwp: Failed sending reply to debugger: Broken pipe と E/Trace: error opening trace file: No such file or directory (2) が出ます。 コードは質問内容のコードと交換しておきました。mSendMessageをString inputText=mInputMessage.getText().toString();にしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問