回答編集履歴

2

バグ修正

2024/03/24 16:45

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -58,10 +58,12 @@
58
58
  switch(item.getItemId()) {
59
59
  case R.id.settings:
60
60
  openSettings();
61
+ return true;
61
62
  case R.id.help:
62
63
  showHelp();
64
+ return true;
63
65
  }
64
- return true;
66
+ return false;
65
67
  }
66
68
  });
67
69
  }
@@ -131,10 +133,12 @@
131
133
  switch(item.getItemId()) {
132
134
  case R.id.settings:
133
135
  openSettings();
136
+ return true;
134
137
  case R.id.help:
135
138
  showHelp();
139
+ return true;
136
140
  }
137
- return true;
141
+ return false;
138
142
  }
139
143
  }, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
140
144
  }

1

コード追加

2022/12/20 14:57

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -1,3 +1,145 @@
1
1
  調査されていますでしょうか。[ドキュメント](https://developer.android.com/reference/androidx/fragment/app/Fragment#onCreateOptionsMenu(android.view.Menu,android.view.MenuInflater)) の文言で検索するだけでもいくつも記事は出てきます。
2
2
 
3
3
  [Menuの表示処理をMenuHostとMenuProviderに置き換える](https://qiita.com/Nabe1216/items/b26b03cbc750ac70a842)
4
+
5
+ リンク先のコードが kotlin なので java に書き換えてみます。
6
+
7
+ アクティビティ
8
+ ```java
9
+ /*
10
+ //Old
11
+ public class ExampleActivity extends AppCompatActivity {
12
+ ExampleActivity() {
13
+ super(R.layout.activity_example);
14
+ }
15
+
16
+ @Override
17
+ public boolean onCreateOptionsMenu(Menu menu) {
18
+ getMenuInflater().inflate(R.menu.menu_main, menu);
19
+ return true;
20
+ }
21
+
22
+ @Override
23
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
24
+ switch(item.getItemId()) {
25
+ case R.id.settings:
26
+ openSettings();
27
+ return true;
28
+ case R.id.help:
29
+ showHelp();
30
+ return true;
31
+ default:
32
+ return super.onOptionsItemSelected(item);
33
+ }
34
+ }
35
+
36
+ void openSettings() {}
37
+ void showHelp() {}
38
+ }
39
+ */
40
+ //New
41
+ public class ExampleActivity extends AppCompatActivity {
42
+ ExampleActivity() {
43
+ super(R.layout.activity_example);
44
+ }
45
+
46
+ @Override
47
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
48
+ super.onCreate(savedInstanceState);
49
+
50
+ addMenuProvider(new MenuProvider() {
51
+ @Override
52
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
53
+ menuInflater.inflate(R.menu.menu_main, menu);
54
+ }
55
+
56
+ @Override
57
+ public boolean onMenuItemSelected(@NonNull MenuItem item) {
58
+ switch(item.getItemId()) {
59
+ case R.id.settings:
60
+ openSettings();
61
+ case R.id.help:
62
+ showHelp();
63
+ }
64
+ return true;
65
+ }
66
+ });
67
+ }
68
+
69
+ void openSettings() {}
70
+ void showHelp() {}
71
+ }
72
+ ```
73
+ フラグメント
74
+ ```java
75
+ /*
76
+ //Old
77
+ public class ExampleFragment extends Fragment {
78
+ ExampleFragment() {
79
+ super(R.layout.fragment_example);
80
+ }
81
+
82
+ @Override
83
+ public void onCreate(@Nullable Bundle savedInstanceState) {
84
+ super.onCreate(savedInstanceState); //必要
85
+ setHasOptionsMenu(true);
86
+ }
87
+
88
+ @Override
89
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
90
+ //super.onCreateOptionsMenu(menu, inflater); //不要
91
+ inflater.inflate(R.menu.menu_example, menu);
92
+ }
93
+
94
+ @Override
95
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
96
+ switch(item.getItemId()) {
97
+ case R.id.settings:
98
+ openSettings();
99
+ return true;
100
+ case R.id.help:
101
+ showHelp();
102
+ return true;
103
+ default:
104
+ return super.onOptionsItemSelected(item);
105
+ }
106
+ }
107
+
108
+ void openSettings() {}
109
+ void showHelp() {}
110
+ }
111
+ */
112
+ //New
113
+ public class ExampleFragment extends Fragment {
114
+ ExampleFragment() {
115
+ super(R.layout.fragment_example);
116
+ }
117
+
118
+ @Override
119
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
120
+ super.onViewCreated(view, savedInstanceState);
121
+
122
+ MenuHost menuHost = requireActivity();
123
+ menuHost.addMenuProvider(new MenuProvider() {
124
+ @Override
125
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
126
+ menuInflater.inflate(R.menu.menu_example, menu);
127
+ }
128
+
129
+ @Override
130
+ public boolean onMenuItemSelected(@NonNull MenuItem item) { //変数名間違えてる
131
+ switch(item.getItemId()) {
132
+ case R.id.settings:
133
+ openSettings();
134
+ case R.id.help:
135
+ showHelp();
136
+ }
137
+ return true;
138
+ }
139
+ }, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
140
+ }
141
+
142
+ void openSettings() {}
143
+ void showHelp() {}
144
+ }
145
+ ```