画面遷移した後のactivityでonCreate()にアクションバーのボタンをGONE表示にしようとid指定(@+id/menu_save)をしたところ、NullPointerExceptionが発生しました。
TableLayoutである(@+id/edit)をINVISIBLE指定した場合は動作したので、アクションバーの読込と"idのmenu_saveが見つからずnullになってしまう"事は分かりましたが、アクションバーitemのidをどのように取得すればいいのか分からなかったので質問しました
・onCreateではなくonCreateOptionsMenuに記述する?
・単にfindViewByIdだとアクションバーのitemはnullになる?
発生している問題・エラーメッセージ
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
該当のソースコード
Schedule.java(画面偏移後の)
JAVA
1public class Schedule extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_schedule); 7 //findViewById(R.id.menu_save).setVisibility(View.GONE); ←該当箇所(除外するとクラッシュしなくなる) 8 findViewById(R.id.edit).setVisibility(View.INVISIBLE); 9 } 10 @Override 11 public boolean onCreateOptionsMenu(Menu menu) { 12 getMenuInflater().inflate(R.menu.action, menu); 13 return true; 14 }
action.xml
JAVA
1<?xml version="1.0" encoding="utf-8"?> 2<menu xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto"> 4 <item 5 android:id="@+id/menu_save" 6 android:icon="@android:drawable/ic_menu_save" 7 app:showAsAction="ifRoom" 8 android:title="Save"> 9 </item> 10</menu>
試したこと
・該当コードを除外した→正常に動いた
・別にボタンを用意しonCreate諸々の動作ではない場面で下記をを実行させる→正常にボタンが消えた
・onCreateではなくonCreateOptionsMenuに下記コードを記述した→上記エラーと共にクラッシュ
JAVA
1findViewById(R.id.menu_save).setVisibility(View.GONE);
補足情報(FW/ツールのバージョンなど)
足りない情報あればお教えください
初の質問で至らない点もありますがよろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/14 02:37 編集