1. TOP
  2. Android
  3. AndroidStudioちっちゃなプログラムで学習(1)

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クラス」もありますね。



「Android studioに関する書籍」を

「パソコン」を
yahooで探す     
    
「パソコンバッグ」を

スポンサードリンク

コメントを書き込む

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。