ようへい

2012年1月23日月曜日

Hello World 3

Android Developersにいくつかチュートリアルがありましたので、今回からチュートリアルに沿って、開発を行っていきたいと思います。
Hello, World | Android Developers
http://developer.android.com/intl/ja/resources/tutorials/hello-world.html AVDは既に作成済みとなるため、「新規 Android プロジェクトを作成する」から行います。
プロジェクト名
HelloAndroid
パッケージ名
jp.blogspot.logroid.helloAndroid
アクティビティを作成
HelloAndroidActivity
SDK の最小バージョン
7
でプロジェクトを作成しました。
ここで改めて各項目について確認しましょう。
プロジェクト名
プロジェクトを格納するディレクトリ名
パッケージ名
ネームスペース。パッケージ固有である必要があるため、ドメインスタイルのパッケージを使用する事が多いみたい。
アクティビティを作成
画面を作成するかどうか。任意でチェックをつける。後で追加することも可能。
SDK の最小バージョン
Android アプリが動作可能な最小APIレベル。
プロジェクトの作成が完了したら、次はプログラムの改修です。
「パッケージエクスプローラ」にて、src/パッケージ名/HelloAndroidActivity.java を開きます。 以下のようになっていることを確認します。
package jp.blogspot.logroid.helloAndroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
画面にテキストを表示するため、以下のように修正を行います。
package jp.blogspot.logroid.helloAndroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);
    }
}
実行します。 画面に「Hello Android」と表示されました。
今回の場合は、前回で実装した方法と異なり、XMLに手を入れず、直接オブジェクトを作成し、描画する方法でした。
ここから、既存のアプリケーションを変更して、XMLレイアウトが、使用されるようにする方法を実践します。
res/layout/main.xml を開きます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>
以下のように書き換えます。
後々のチュートリアルHello, Testingでのコードを動作させるため、TextViewにidを指定しています。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"
    android:id="@+id/textview" />
res/value/strings.xml を開きます。
このファイルは、UIに使用するデフォルトのテキスト文字列を保存するファイルとのことです。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, HelloAndroid!</string>
    <string name="app_name">HelloAndroid</string>

</resources>
以下のように書き換えます。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello Android! I am a string resource!</string>
    <string name="app_name">HelloAndroid</string>

</resources>
src/パッケージ名/HelloAndroidActivity.java を開き、以下のように変更します。
package jp.blogspot.logroid.helloAndroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
実行します。
「Hello Android! I am a string resource!」が表示されます。
プロジェクトのデバッグを行います。
src/パッケージ名/HelloAndroidActivity.java を開き、以下のように変更します。
package jp.blogspot.logroid.helloAndroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Object o = null;
        o.toString();
        setContentView(R.layout.main);
    }
}
実行します。
アラートが表示されることを確認します。
eclipseのメニューから実行->ヒストリーのデバッグ->HelloAndroidActivityを選択します。
その後、デバッグパースペクティブへ画面が切り替わり、エラーが発生した箇所でブレイクします。
o.toString();でエラーが発生し、ブレイクします。
また、LogCatで、java.lang.NullPointerExceptionが発生していることを確認します。
パースペクティブをJavaに切り替え、以下のように修正します。
package jp.blogspot.logroid.helloAndroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
以上で、Hello, Worldチュートリアルは終了です。
デバッグツールについて触れることが出来ました。
なかなかデバッグし易そうな印象。
次回はHello, Viewsを実践してみたいと思います。
関連記事

0 件のコメント:

コメントを投稿