コンポーネント

Posted by muchag | Android |
初回投稿:2011-01-22 (土) 15:20:50 | 最終更新:2011-01-25 (火) 14:18:55

さぁ、また用語の学習だ・・・。
コンポーネント? コントロール? ユーザーインターフェイス?
言語によって意味するものが変わるのでゴチャゴチャ。 🙁

詳細は Android Developers などにちゃんとあるので、ここでは自分が掴んだイメージを列挙。
間違っている可能性大!

参考元:Android Developers 開発の基礎

概要

Android アプリケーションを構成する最大単位。
Android アプリケーションは、1つ以上の コンポーネント の集合体である。
 

種類

コンポーネントには4種ある。

  • アクティビティ (Activity)
  • サービス (Service)
  • ブロードキャスト レシーバ (BroadcastReceiver)
  • コンテンツ プロバイダ (ContentProvider)

新聞でイメージすると・・・

アクティビティ

画面とユーザーインターフェイスを持ち、ユーザとのやり取りをするタイプ。
具体例:いわゆるアプリの画面

イメージは「営業マン」。
販促品などを用いて客と意思疎通を図る。
 

サービス

バックグラウンドで動くタイプ。
具体例:オーディオプレイヤー

イメージは「新聞配達員」。
一旦頼んだら、止めるまでルーティンワークをし続ける。
普段、配達員の姿は目にしないけど、新聞は毎日ポストに入っている。
 

ブロードキャスト レシーバ

イベントキャッチタイプ。
サービス のように常駐しているわけではない。
具体例:メール受信

イメージは新聞の「号外」。
何かあると頼みもしないのに教えてくれる。
 

コンテンツ プロバイダ

外部からのデータ閲覧を可能にするタイプ。

イメージは「記事データベース」。
外部公開用の「記事データベース」があれば、新聞社の人間でなくても閲覧可能。
 

利用

このうち

  • アクティビティ (Activity)
  • サービス (Service)
  • ブロードキャスト レシーバ (BroadcastReceiver)

は、Intent オブジェクトによってアクティブ化され

  • コンテンツ プロバイダ (ContentProvider)

は、ContentResolver オブジェクトのメソッドによって利用する。
 
<お手本になりそうなサイト>
きのふよりけふ、けふよりあした:【Android】Androidアプリのいろは
↑ 同じ書籍を参考にしながら・・・素晴らしい。頭の出来の違いがまざまざと・・・orz

Posted by muchag | Android |
初回投稿:2011-01-22 (土) 15:20:50 | 最終更新:2011-01-25 (火) 14:18:55

LinearLayout

Posted by muchag | Android |
初回投稿:2011-01-22 (土) 1:09:56 | 最終更新:2011-07-07 (木) 10:46:05

LinearLayout
子供達を縦か横に1列に並べるレイアウト。

Android Developers:LinearLayout

[android]import android.widget.LinearLayout;

public class Hoge extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//レイアウト
LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.BLACK);
layout.setBackgroundResource(R.drawable.background);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(0, 400, 0, 0);
setContentView(layout);
}
}[/android]  

setOrientation(13行目)

setOrientation メソッドは、レイアウト方向を指定。
[android]layout.setOrientation(LinearLayout.VERTICAL); // 垂直方向=縦1列
layout.setOrientation(LinearLayout.HORIZONTAL); // 水平方向=横1列[/android]  

setPadding(14行目)

setPadding メソッドは、LinearLayout オブジェクトと親オブジェクトとの隙間を指定。
[android]layout.setPadding(左, 上, 右, 下);[/android]

CSS と同じ並び順にしてくれれば覚えやすかったのに・・・。
 

子供について

子供(LinearLayout の内部に配置するオブジェクト)の配置場所を指定するには
setMargins 参照。
 

XML

とてもよい具体例のサイトを見つけたのでメモ。
プログラミング雑記:LinearLayoutとRelativeLayoutの使い方をまとめてみた

Posted by muchag | Android |
初回投稿:2011-01-22 (土) 1:09:56 | 最終更新:2011-07-07 (木) 10:46:05

キャッシュのクリア?

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 18:29:28 | 最終更新:2011-01-21 (金) 18:31:27

Flex で経験したブラウザのキャッシュ。

コードを更新したはずなのに、反映されない・・・。
これはブラウザのキャッシュに前のコードが残っているため起こった。

Android の場合(Java の場合?)
現段階では Eclipse からエミュレータで実行するところまでしか試してないが
プロジェクトの更新を行わないと、前のコードで動くようだ。

プロジェクトの更新

左ペインの「パッケージ・エクスプローラ」で当該プロジェクトを選択して
コンテキストメニューから「リフレッシュ」または F5 。

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 18:29:28 | 最終更新:2011-01-21 (金) 18:31:27

リソースファイルのネーミング

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 17:13:56 | 最終更新:2011-01-21 (金) 17:16:36

リソースファイルのネーミングには制限があったのね。

コンソールビューを見ると
無効なファイル名: must contain only [a-z0-9_.]
と書かれている。

なるほど、つまりリソースファイルの名前には

  • 半角英字小文字
  • 半角数字
  • アンダースコア
  • ドット(ピリオド)

しか使えない・・・っと。

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 17:13:56 | 最終更新:2011-01-21 (金) 17:16:36

エラーメッセージとその対処法

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 17:05:33 | 最終更新:2011-07-06 (水) 14:51:54

相変わらずしょーもないことで時間を食う。。。
同じ間違いを繰り返したくないものですな。 😐

エラーメッセージを見てピンとこないものと記事にしたものをピックアップ。

問題ビュー

「問題」ビューに表示されるエラー
 

invalid resource directory name drawable-nodpi-ja Android AAPT Problem

 
<原因>
フォルダ名 drawable-nodpi-ja が原因。
 
<対処法>
drawable-ja-nodpi が正解。
多言語対応にしようとして失敗。
 
 

トークンに構文エラーがあります。これらのトークンを削除してください Java 問題

 
<原因>
[android]   //インテントに保存されたデータを取得[/android] 上記コメント行のインデントが原因だった。
 
<対処法>
インデントを1回消して入力し直したら解決。

これはきっつい・・・。 😥
サンプルからコピペした際に見えない文字が入ったのかしら・・・。
 
 

トークン “3” に構文エラーがあります。このトークンを削除してください R.java Java 問題

 
<原因>
リソースファイルの名前が 3jxz5leh.bmp であり、
ファイル名の最初に数字があることが原因のようだ。
 
<対処法>
ファイル名を 3jxz5leh.bmp から jxz5leh.bmp としたら解決。
 

ダイアログ

エラーを知らせるダイアログが出るパターン。
 

‘JDI スレッド評価’ に問題が発生しました。 非同期スレッド・キューの処理中に例外

 
<原因>
[android]Arrays.binarySearch(strArray, i)[/android] データ型の不一致が原因だった。
strArray ・・・ String
i ・・・ int
 
<対処法>
[android]Arrays.binarySearch(strArray, String.valueOf(i) )[/android] このように直したら解決。

他にもデバッグパースペクティブの「式ビュー」にある監視式を削除したら直った、という情報あり。
 

デバッグビュー

デバッグビューに表示されるエラー。
 

CursorIndexOutOfBoundsException

 
<原因>
Cursor オブジェクトのポインタの設定を忘れた。
 
<対処法>
[android]cursor.moveToFirst();[/android] この1文を挿入したら解決。

これで3度目・・・。 😥
 

コンソール

コンソールビューに表示されるエラー。
 
AVD のエラー

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 17:05:33 | 最終更新:2011-07-06 (水) 14:51:54

リンク集

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 1:19:41 | 最終更新:2011-01-21 (金) 1:25:45

関連サイトのリンク集

 

メーカー
SHARP

SH Developers Square
 

Sony Ericsson

developer WORLD

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 1:19:41 | 最終更新:2011-01-21 (金) 1:25:45

プロジェクト -> 新規作成

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 0:31:21 | 最終更新:2012-01-09 (月) 15:03:59

参考書籍に倣って
新規プロジェクトを立ち上げてみる。

 
[ファイル]-[新規]-[プロジェクト]

 
「Android」を開いて
「Android プロジェクト」を選択。

 

  1. プロジェクト名
  2. 内容:「ワークスペース内に新規プロジェクトを作成」
  3. ビルド・ターゲット:作成する Android のヴァージョンを選択
    または、「Google APIs」を選択
  4. プロパティー

  5. アプリケーション名
  6. パッケージ名
  7. アクティビティ名
  8. 「Min SDK Version」:ビルド・ターゲットで選択したものを参照

 
⑤のパッケージ名に関して

クラス名の衝突を避けるための名前空間
通常は自分のサイトドメインを逆順にして、さらにプロジェクト名を小文字で記述したものを利用

引用元書籍「Android 2.1 プログラミング バイブル

あ、なるほど~。
今までどういう規則なのかずっと不思議だったけど、そういうことなのね。
 
このように左ペインに
HelloWorld プロジェクトが出来上がっていれば成功♪

Posted by muchag | Android |
初回投稿:2011-01-21 (金) 0:31:21 | 最終更新:2012-01-09 (月) 15:03:59

開発環境の整備 -> Eclipse 編

Posted by muchag | Android |
初回投稿:2011-01-20 (木) 20:06:46 | 最終更新:2011-04-13 (水) 22:54:52