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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/03 03:02
2016/10/03 03:13
2016/10/03 03:46
2016/10/03 04:23
2016/10/03 05:48
2016/10/03 05:53
2016/10/03 06:02