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

回答編集履歴

1

コードに対しての指摘

2015/02/09 16:10

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,33 @@
1
1
  [AndroidのXMLで2次元配列を定義してソースから呼び出す](http://u1aryz.blogspot.jp/2011/07/androidxml2.html)
2
2
  ファイルから読むのではなく、こちらのようにリソースに定義して読み込むといいのではないでしょうか
3
- ファイルの読み取りに付き物の例外処理も不要ですし、管理も楽です。
3
+ ファイルの読み取りに付き物の例外処理も不要ですし、管理も楽です。
4
+
5
+ 以下、ちょっとコードで気になるところを指摘します。
6
+ ```lang-java
7
+ MediaPlayer chime = MediaPlayer.create(getContext(), R.raw.test);
8
+ ```
9
+ 初期化子のように書いてますけど、多分これが無理です。
10
+ これをやるならコンストラクタでやるべきでしょうね
11
+ ```lang-java
12
+ class SampleView extends View {
13
+ MediaPlayer chime;
14
+ //略
15
+ public SampleView(Context context){
16
+ super(context)
17
+ chime = MediaPlayer.create(getContext(), R.raw.test);
18
+ }
19
+ //略
20
+ }
21
+ ```
22
+ 場合によっては、フィールド宣言で計算を使っているものもコンストラクタ内でやるべきかもしれません。
23
+ ```lang-java
24
+ //TODO: 時刻を取得する
25
+ Calendar now = Calendar.getInstance();
26
+ h = now.getInstance().get(now.HOUR_OF_DAY); //譎ゅr莉」蜈・
27
+ m = now.getInstance().get(now.MINUTE); //蛻?繧剃サ」蜈・
28
+ s= now.getInstance().get(now.SECOND); //遘偵r莉」蜈・
29
+ mm=now.getInstance().get(now.MINUTE); //時間表示用
30
+ ```
31
+ 各時間を取得するのにその都度`getInstance()`は不要だと思います。実行する度、違う時刻を返しますので。
32
+ `get(int)`も、フィールド値はstaticフィールドなので、`get(Calendar.HOUR_OF_DAY)`などが正しい書き方。
33
+ `MINUTE`フィールドを2回取ってるのも謎ですし。