AndroidStudioちっちゃなプログラムで学習(1)
|
目次
カーネルOSのバージョンを取得表示する処理から学んだこと
色々調べながら、簡単なプログラムを書いてみました。短いソースですが、「初期だからこそ」の大事なことをいくつか勉強出来ました。自分でも忘れないように書いておきます。
(1)まずは作成したソースです
「MainActivity.java」を抜粋します。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String verInfo = null; //OSのバージョン取得用の変数 try { BufferedReader reader = new BufferedReader(new FileReader("/proc/version/")); //OS情報を取得 verInfo = reader.readLine(); //情報を読みだして変数へ格納 }catch (FileNotFoundException e){ Log.e("tag",e.toString()); } catch (IOException e){ Log.e("tag",e.toString()); } //表示用のテキストビューに出力 TextView text=(TextView)findViewById(R.id.txVwResult); String strResult="カーネルのバージョンは・・" + '\n' +verInfo + '\n' + "です"; text.setText(strResult); }
(2)主要のソースはプロジェクトのどこにあるのか
「MainActivity.java」「activity_main.xml」「AndroidManifest.xml」主要3つのソースはどこにあるのか・・ここから始まりました。ファイル | プロジェクトフォルダ |
---|---|
MainActivity.java | {app}-{src}-{main}-{java} |
activity_main.xml | {app}-{src}-{main}-{res}-{layout} |
AndroidManifest.xml | {app}-{src}-{main} |
(3)プログラムはどこから起動されるのか
「AndroidManifest.xml」の一部を抜粋します。
<activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
この中で
・アクティビティの名前が「MainActivity」であること
・アプリ起動時にこのアクティビティを表示すると
が記述されています。
ゆえに、「MainActivity.java MainActivityクラス」の「onCreateメソッド」がアプリ起動時に自動的に呼び出しされているのです。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }はぁ~ここまで長かった!
スポンサードリンク
(4)import文の記述
例えば「FileReader」を使用したい場合。「FileReader」に関するソースは「 java.io.FileReader 」に記載されているため、これを使用すべく宣言が必要になります。
この宣言が「 import java.io.FileReader; 」となるのですが、これを記載しないと「FileReader」部分のソースが赤字表示されています。
手入力だと面倒なので支援機能を使って追加します。
赤字表示されている「FileReader」付近にカーソルを持っていくと、上図のようにお伺いしてくれます。
ここで[Alt]+[Enter]キーを押すと、import文を自動追加してくれます。赤字も解除されます。
気遣いがうれしい機能です。
(5)エラー処理の記述
エラー処理を書かずに
BufferedReader reader = new BufferedReader(new FileReader("/proc/version/")); //OS情報を取得 verInfo = reader.readLine(); //情報を読みだして変数へ格納だけのソースを記述すると、この部分が赤破線表示になっていました。
エラー処理を追加し、
try { BufferedReader reader = new BufferedReader(new FileReader("/proc/version/")); //OS情報を取得 verInfo = reader.readLine(); //情報を読みだして変数へ格納 }catch (FileNotFoundException e){ Log.e("tag",e.toString()); } catch (IOException e){ Log.e("tag",e.toString()); }とすると、赤破線表示が解除されました。バッファーへの読み出しを行う際にエラーが発生することも想定する必要があるのですね。
(6)Javaソースから画面上パーツへのアクセス方法
読みだしたOSの情報を画面上のテキストビュー(IDは「txVwResult」)に表示する際のソースです。
//表示用のテキストビューに出力 TextView text=(TextView)findViewById(R.id.txVwResult); String strResult="カーネルのバージョンは・・" + '\n' +verInfo + '\n' + "です"; text.setText(strResult);
TextView text=(TextView)findViewById(R.id.txVwResult);
この部分で画面上に配置されたテキストビュー「txVwResult」をTextView型の変数「text」に格納しています。
「findViewById」メソッドは指定したIDを持つ画面上のパーツを返してくれるのですが、この戻り値は「View型」であるため、「TextView型」としてアクセスしたい場合は戻り値を「キャスト」しなければなりません。
「型キャスト」についての記事はこちら
「R.id.txVwResult」にある「R.javaのidクラス」ですが、プロジェクトをビルドするとJavaが自動生成するリソースのようです。
詳しくわからないので自分の覚書き程度で申し訳ないですが・・
「app\build\generated\source\r\debug\androidsupportv7appcompat」
に「R.java」がありました。ここに「idクラス」もありますね。
スポンサードリンク
コメントを書き込む