private TextView txtMineCount;
private TextView txtTimer;
あなたがそれらを割り当てる必要がありそう...これが。TextViewへの参照を保持することができ、2つのローカル変数を宣言最初は彼らが何を指していません。
txtMineCount = (TextView) findViewById(R.id.MineCount);
txtTimer = (TextView) findViewById(R.id.Timer);
ここでは、2つの変数を割り当てることができます。私たちは、のメソッドを呼び出しますIDによって作成されたテキストベースのウィジェットの中でルックアップを行うためのフレームワークです。重要なことに、これらのウィジェットはここでは作成していません。それらに名前を付けるために使用するいくつかのID定数に対応する、adyに割り当てられたオブジェクトインスタンス。
View.findViewById()がnull
を返すことができるので、これらの検索が一般的な場合に成功するとは必ずしも「安全」であるとは限りません。しかし、このコードを書いた人は、その特定のIDを持つコードの他の場所に実際に作成されたTextViewオブジェクトがあると仮定しています。
(彼らは、その後だけ例外が発生しますtxtMineCount
またはtxtTimer
上の書体を設定しようとし、そのことについて間違っている場合は...)
// set font style for timer and mine count to LCD style
Typeface lcdFont = Typeface.createFromAsset(getAssets(),
"fonts/lcd2mono.ttf");
Androidが同梱さいくつかのデフォルトのフォントを持っていますシステム。しかし、このプログラムでは、アプリケーションの資産のfontサブディレクトリに埋め込まれているTrueType Font File(基本的に、アプリケーションバンドル内を移動する一連のファイル)を利用したいと考えています。これにより、そのファイルからTextViewに適用するのに適したTypefaceオブジェクトが作成されます。
txtMineCount.setTypeface(lcdFont);
txtTimer.setTypeface(lcdFont);
これは、2つのTextViewで使用される書体を上記のフォントに設定するだけです。
中間変数なしで同等の効果が得られることに注意してください。このコードは、あなたが投稿したものと同じことを行う必要があります。
((TextView)findViewById(R.id.MineCount)).setTypeface(
Typeface.createFromAsset(getAssets(), "fonts/lcd2mono.ttf"));
((TextView)findViewById(R.id.Timer)).setTypeface(
Typeface.createFromAsset(getAssets(), "fonts/lcd2mono.ttf"));
をしかし、それはこのように読むことを困難だし、変数に中間結果を保存しないことにより、あなたはその中間結果を複数回計算に終わることができます。たとえば、Typeface.createFromAsset
コードは、このように書くときに同じパラメータで2回実行されます。
あなたの質問は何ですか?それのどの部分が不明ですか? – EboMike
おそらく基本的なJavaの本が必要でしょう。あなたは特に何を得ていないのですか? – kcoppock
私は他の行もあると思うが、これについては考えていない。 書体lcdFont = Typeface.createFromAsset(getAssets()、 "fonts/lcd2mono.ttf"); 私はなぜtxtMineCountを別のtextView(レイアウトXmlで定義されている)に設定するのかもわかりません。私はちょうどxmlのテキストビューに.ttfを直接インポートできると思ったでしょうか? – Dave