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

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

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

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

Android

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

Q&A

1回答

1842閲覧

fragmentでmenuを変更する

syosinsya109

総合スコア41

Java

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

Android

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

0グッド

0クリップ

投稿2022/12/18 06:53

前提

androidについて質問します
menuをfragmentで変更したいと思っているのですが、非推奨、廃止されたメソッドが出てきて変更できません。

実現したいこと

fragmentでmenuを変更する

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

Overrides deprecated method in 'androidx.fragment.app.Fragment' 'onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater)' is deprecated

該当のソースコード

java(fragment)

1import android.content.Context; 2import android.content.Intent; 3import android.content.SharedPreferences; 4import android.os.Bundle; 5import android.view.LayoutInflater; 6import android.view.Menu; 7import android.view.MenuInflater; 8import android.view.MenuItem; 9import android.view.View; 10import android.view.ViewGroup; 11import android.widget.Button; 12 13import androidx.annotation.NonNull; 14import androidx.fragment.app.Fragment; 15import androidx.fragment.app.FragmentManager; 16import androidx.fragment.app.FragmentTransaction; 17 18import local.hal.st31.android.navigationdrowersample2.R; 19 20public class ButtonFragment extends Fragment { 21 22 static ButtonFragment newInstance(){ 23 ButtonFragment fragment01 = new ButtonFragment(); 24 25 return fragment01; 26 } 27 public View onCreateView(@NonNull LayoutInflater inflater, 28 ViewGroup container, Bundle savedInstanceState) { 29 return inflater.inflate(R.layout.button_fragment, 30 container, false); 31 } 32 33 @Override 34 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 35 super.onCreateOptionsMenu(menu, inflater); 36 inflater.inflate(R.menu.option_menu_second, menu); 37 } 38 39 @Override 40 public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { 41 super.onViewCreated(view, savedInstanceState); 42 Button button = view.findViewById(R.id.button1); 43 button.setOnClickListener( v -> { 44 FragmentManager fragmentManager = getParentFragmentManager(); 45 FragmentTransaction fragmentTransaction = 46 fragmentManager.beginTransaction(); 47// BackStackを設定 48 fragmentTransaction.addToBackStack(null); 49 fragmentTransaction.setReorderingAllowed(true); 50 51 fragmentTransaction.replace(R.id.nav_host_fragment_content_main, 52 GalleryFragment.newInstance()); 53 fragmentTransaction.commit(); 54 }); 55 } 56 57 @Override 58 public void onDestroyView() { 59 super.onDestroyView(); 60 } 61}

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

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

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

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

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

guest

回答1

0

調査されていますでしょうか。ドキュメント の文言で検索するだけでもいくつも記事は出てきます。

Menuの表示処理をMenuHostとMenuProviderに置き換える

リンク先のコードが kotlin なので java に書き換えてみます。

アクティビティ

java

1/* 2//Old 3public class ExampleActivity extends AppCompatActivity { 4 ExampleActivity() { 5 super(R.layout.activity_example); 6 } 7 8 @Override 9 public boolean onCreateOptionsMenu(Menu menu) { 10 getMenuInflater().inflate(R.menu.menu_main, menu); 11 return true; 12 } 13 14 @Override 15 public boolean onOptionsItemSelected(@NonNull MenuItem item) { 16 switch(item.getItemId()) { 17 case R.id.settings: 18 openSettings(); 19 return true; 20 case R.id.help: 21 showHelp(); 22 return true; 23 default: 24 return super.onOptionsItemSelected(item); 25 } 26 } 27 28 void openSettings() {} 29 void showHelp() {} 30} 31*/ 32//New 33public class ExampleActivity extends AppCompatActivity { 34 ExampleActivity() { 35 super(R.layout.activity_example); 36 } 37 38 @Override 39 protected void onCreate(@Nullable Bundle savedInstanceState) { 40 super.onCreate(savedInstanceState); 41 42 addMenuProvider(new MenuProvider() { 43 @Override 44 public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) { 45 menuInflater.inflate(R.menu.menu_main, menu); 46 } 47 48 @Override 49 public boolean onMenuItemSelected(@NonNull MenuItem item) { 50 switch(item.getItemId()) { 51 case R.id.settings: 52 openSettings(); 53 return true; 54 case R.id.help: 55 showHelp(); 56 return true; 57 } 58 return false; 59 } 60 }); 61 } 62 63 void openSettings() {} 64 void showHelp() {} 65}

フラグメント

java

1/* 2//Old 3public class ExampleFragment extends Fragment { 4 ExampleFragment() { 5 super(R.layout.fragment_example); 6 } 7 8 @Override 9 public void onCreate(@Nullable Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); //必要 11 setHasOptionsMenu(true); 12 } 13 14 @Override 15 public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { 16 //super.onCreateOptionsMenu(menu, inflater); //不要 17 inflater.inflate(R.menu.menu_example, menu); 18 } 19 20 @Override 21 public boolean onOptionsItemSelected(@NonNull MenuItem item) { 22 switch(item.getItemId()) { 23 case R.id.settings: 24 openSettings(); 25 return true; 26 case R.id.help: 27 showHelp(); 28 return true; 29 default: 30 return super.onOptionsItemSelected(item); 31 } 32 } 33 34 void openSettings() {} 35 void showHelp() {} 36} 37*/ 38//New 39public class ExampleFragment extends Fragment { 40 ExampleFragment() { 41 super(R.layout.fragment_example); 42 } 43 44 @Override 45 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 46 super.onViewCreated(view, savedInstanceState); 47 48 MenuHost menuHost = requireActivity(); 49 menuHost.addMenuProvider(new MenuProvider() { 50 @Override 51 public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) { 52 menuInflater.inflate(R.menu.menu_example, menu); 53 } 54 55 @Override 56 public boolean onMenuItemSelected(@NonNull MenuItem item) { //変数名間違えてる 57 switch(item.getItemId()) { 58 case R.id.settings: 59 openSettings(); 60 return true; 61 case R.id.help: 62 showHelp(); 63 return true; 64 } 65 return false; 66 } 67 }, getViewLifecycleOwner(), Lifecycle.State.RESUMED); 68 } 69 70 void openSettings() {} 71 void showHelp() {} 72}

投稿2022/12/18 07:37

編集2024/03/24 16:45
jimbe

総合スコア12614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問