Android
Androidの4大構成要素
・Activity 画面を構築
・Service 画面を持たずに裏で常駐
・ContentProvider アプリ間でデータを共有
・Intent 要素を繋げる
Androidアプリ = ソースコード + リソース + マニフェスト
Androidのバージョン分布
リスナーの実装について
★直接に実装パターン
public class MyActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(this);
↑複数ボタンの場合に対応しづらい
}
public void onClick(View v) {
// do something
}
}
★匿名クラスパターン
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
↓複数ボタンに同じアクションを登録する場合に再利用できない
public void onClick(View v) {
// do something
}
});
}
}
★内部クラスパターン
public class MyActivity extends Activity {
private class MyListener implements OnClickListener { ←クラス定義は面倒
public void onClick(View v) {
// do something
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(new MyListener());
}
}
★デリゲートパターン
public class MyActivity extends Activity {
OnClickListener myListener = new OnClickListener() {
public void onClick(View v) {
// do something
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(myListener);
findViewById(R.id.button2).setOnClickListener(myListener); ←再利用
}
}
・違うアクションを実装する場合、匿名クラスパターンの方がよい。
・同じアクションを再利用する場合、デリゲートパターンの方がよい。
ちなみに、どんなインターフェースの実装でも同じ。
★LogCatが表示されない時の対処法
1.コマンドプロンプトを起動
2.Android SDKのツールディレクトリに移動
例)C:\XXX\android-sdk_r14-windows\platform-tools (古いバージョンなら\tools)
3.コマンドを実行
adb kill-server
adb start-server
4.Eclipse を再起動
★MessageによるMVC設計