AndroidStudioにてアプリ開発を始めました。
ToolBarにて、以下のようなことを行いたいと思っております。
【想定画面(ツールバー)】
← 2018/6/9 →
【想定動作】
←:押したら中央の日付が前日に変化
→:押したら中央の日付が翌日に変化
2018/6/9:押したらクリックイベント発生
最初は日付表示部分をToolBarのTitleで表示し、
menuのitemで「←」「→」を追加して変更していたのですが
2018/6/9 ← →
・日付の左側に「←」を配置できない
・日付のクリックイベントを起こせない
となってしまったので諦め、
次にすべてmenuのitemに追加したら
← 2018/6/9 →
表示は想定通りの並びになったのですが、
・日付のtextの変更方法がわからない
となってしまいました。
itemのtextを動的に変更する方法が調べても上手く探せなかったため、
教えていただけましたら幸いです。
もしくは、他に良い実装方法などがありましたら教えてください。
よろしくお願いいたします。
<追記>
以下の方法で、「←」「→」を押したときに日付部分を変更することが出来ました。
menu_main.xml
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/before_day_button" 6 app:showAsAction="always" 7 android:title="←" /> 8 <item 9 android:id="@+id/the_day_button" 10 app:showAsAction="always" 11 android:title="ひづけ" /> 12 <item 13 android:id="@+id/next_day_button" 14 app:showAsAction="always" 15 android:title="→" /> 16</menu>
MainActivity.java
1 @Override 2 public boolean onOptionsItemSelected(MenuItem item) { 3 switch (item.getItemId()) { 4 case R.id.before_day_button: 5 View aaa = toolbar.findViewById(R.id.the_day_button); 6 TextView tv = (TextView) aaa; 7 tv.setText("前日"); 8 break; 9 case R.id.next_day_button: 10 View bbb = toolbar.findViewById(R.id.the_day_button); 11 TextView tva = (TextView) bbb; 12 tva.setText("翌日"); 13 break; 14 } 15 return true; 16 }
ですが、同じ処理をonCreate()上で記述すると起動エラーで落ちてしまいます。
※最初に表示する本日の日付を入れたいため、起動時に書いています。
MainActivity.java
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // ツールバーをアクションバーとしてセット 7 toolbar = (Toolbar) findViewById(R.id.tool_bar); 8 toolbar.setTitle(""); 9 // ツールバーの準備後に呼ぶ 10 setSupportActionBar(toolbar); 11 // 今日の日付を設定 12 View v = toolbar.findViewById(R.id.the_day_button); 13 TextView tv = (TextView) v; 14 tv.setText("今日"); 15 }
初期表示時にどのように変更できますでしょうか。。
教えていただけたらと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/11 13:09