teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

情報の更新

2018/06/09 08:48

投稿

kome92
kome92

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- [Android]ToolBarのクリックイベントについて
1
+ [Android]ToolBarのクリックイベントとテキストの変更
body CHANGED
@@ -24,9 +24,71 @@
24
24
  ・日付のtextの変更方法がわからない
25
25
  となってしまいました。
26
26
 
27
-
28
27
  itemのtextを動的に変更する方法が調べても上手く探せなかったため、
29
28
  教えていただけましたら幸いです。
30
29
  もしくは、他に良い実装方法などがありましたら教えてください。
31
30
 
31
+ よろしくお願いいたします。
32
+
33
+ <追記>
34
+ 以下の方法で、「←」「→」を押したときに日付部分を変更することが出来ました。
35
+ ```menu_main.xml
36
+ <?xml version="1.0" encoding="utf-8"?>
37
+ <menu xmlns:android="http://schemas.android.com/apk/res/android"
38
+ xmlns:app="http://schemas.android.com/apk/res-auto">
39
+ <item
40
+ android:id="@+id/before_day_button"
41
+ app:showAsAction="always"
42
+ android:title="←" />
43
+ <item
44
+ android:id="@+id/the_day_button"
45
+ app:showAsAction="always"
46
+ android:title="ひづけ" />
47
+ <item
48
+ android:id="@+id/next_day_button"
49
+ app:showAsAction="always"
50
+ android:title="→" />
51
+ </menu>
52
+ ```
53
+ ```MainActivity.java
54
+ @Override
55
+ public boolean onOptionsItemSelected(MenuItem item) {
56
+ switch (item.getItemId()) {
57
+ case R.id.before_day_button:
58
+ View aaa = toolbar.findViewById(R.id.the_day_button);
59
+ TextView tv = (TextView) aaa;
60
+ tv.setText("前日");
61
+ break;
62
+ case R.id.next_day_button:
63
+ View bbb = toolbar.findViewById(R.id.the_day_button);
64
+ TextView tva = (TextView) bbb;
65
+ tva.setText("翌日");
66
+ break;
67
+ }
68
+ return true;
69
+ }
70
+ ```
71
+
72
+ ですが、同じ処理をonCreate()上で記述すると起動エラーで落ちてしまいます。
73
+ ※最初に表示する本日の日付を入れたいため、起動時に書いています。
74
+ ```MainActivity.java
75
+ @Override
76
+ protected void onCreate(Bundle savedInstanceState) {
77
+ super.onCreate(savedInstanceState);
78
+ setContentView(R.layout.activity_main);
79
+
80
+ // ツールバーをアクションバーとしてセット
81
+ toolbar = (Toolbar) findViewById(R.id.tool_bar);
82
+ toolbar.setTitle("");
83
+ // ツールバーの準備後に呼ぶ
84
+ setSupportActionBar(toolbar);
85
+ // 今日の日付を設定
86
+ View v = toolbar.findViewById(R.id.the_day_button);
87
+ TextView tv = (TextView) v;
88
+ tv.setText("今日");
89
+ }
90
+ ```
91
+ 初期表示時にどのように変更できますでしょうか。。
92
+
93
+ 教えていただけたらと思います。
32
94
  よろしくお願いいたします。