2011年7月30日土曜日

AlertDialogが正常に表示されない件

AlertDialogが正常に表示されない件

AlertDialog.Builderに用意されている、ある種のメソッドを組み合わせて使うと、AlertDialogが正常に表示されなくなります。

私の場合は、
setMessageメソッドと
setItemsメソッドとを
同時に使った場合に表示が変になりました。

皆さんもやってみましょう気を付けましょう。

続編をAlertDialogが正常に表示されない件 その2に書いておきました。

2011年7月27日水曜日

XML or text declaration not at start of entity

error: Error parsing XML: XML or text declaration not at start of entity

XMLファイルの先頭の行にコメントを書いたりすると、上記エラーが発生します。
先頭の行は次のとおりでなければなりません。
<?xml version="1.0" encoding="utf-8"?>

2011年7月25日月曜日

android:summaryを動的に書き換える その2

android:summaryを動的に書き換える その2

前回は、利用者が操作した後のentry値を取得して表示した。
今回は、アプリの起動時に、保存していた設定値を読み込んで表示することに挑戦する。


Javaファイル

始めの部分:

public class setPreferenceAct extends PreferenceActivity
    implements
    OnSharedPreferenceChangeListener
    {


    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.layout.preference);
        
        int iRet;
        String s;
        Preference p;
        ListPreference l;
        Resources r;
        p = findPreference("JPSource");
        l = (ListPreference)p;
        s = l.getValue();
        r = getResources();
        iRet = l.findIndexOfValue(s);
        if(iRet<0){
            s = r.getString(R.string.Empty);
        }
        else{
            String[] sa;
            sa = r.getStringArray(R.array.JPN_Sources);
            s = sa[iRet];
        }
        l.setSummary(s);

ListPreference系を使えば、そこからそのまま設定値を読み込めます。findIndexOfValueメソッドも用意されていて、とても便利ですね。
なお、保存した設定値は、Androidアプリの設定画面を作成するの「保存したデータの確認」に書かれています。
このファイルをEclipseのDDMSを使って削除すれば、インストール前の状態が再現されます。

android:summaryを動的に書き換える

android:summaryを動的に書き換える

設定画面のListPreferenceクラスには、android:summaryがあります。
summaryですから、ここに要約を書くのが実直な心掛けです。

しかし、世間様に出回っているアプリを観察すると、summary欄には、利用者がListPreferenceで設定した後のentry文字列が表示されているのです。この方がすばらしいと思うのは、果たして私だけだろうか。
要約なんて、セッセ、セッセ書いてる場合じゃないよ。

私なりのやり方を紹介します。XMLファイルは、設定画面と、それ以外の画面を混在させる方法で記載したものを使います。

Javaファイル

始めの部分:
public class setPreferenceAct extends PreferenceActivity
    implements
    OnSharedPreferenceChangeListener
    {

メソッドの部分:
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if(key.equals("JPSource")==true){
            Preference p = findPreference ("JPSource");
            ListPreference l;
            CharSequence c;
            l = (ListPreference)p;
            c = l.getEntry();
            l.setSummary(c);
        }
    }

続編をandroid:summaryを動的に書き換える その2に書いておきました。

2011年7月22日金曜日

Failed to push the item(s).

EclipseのDDMSのFile ExplorerのSDCardフォルダーに対してPushコマンドを使おうとすると、次のerrorが2行に渡り出る場合があります。

一行目:Failed to push the item(s).
二行目:(null)

この問題の解決方法を見つけましたので報告します。

  1. DDMSの画面を出す
  2. Devicesのタブをクリックする
  3. ▽をクリックする
  4. Reset adbをクリックする

以前、ここに、「SDCardにダミーファイルを作成すれば良い」という趣旨を書いていましたが、それは削除します。

【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Version: Indigo Release

2011年7月21日木曜日

Error parsing XML: not well-formed (invalid token)

error: Error parsing XML: not well-formed (invalid token)

上記のエラーの発生原因はいろいろあるでしょう。
私の場合は " を半角文字で書くべきところを、全角文字で書いてしまったためエラーになってしまいました。

なお、全角スペースを見つけ易くする方法は次のとおりです。
  1. Window
  2. Customize Perspective...
  3. Customize Perspective画面を出す
  4. Tool Bar Visibilityタブ
  5. Editor Presentation
  6. Show Whitespace Charactersにチェックを入れる
  7. ok
  8. ツールバーのShow Whitespace Charactersを凹ませる。
同じことは、次の方法でも行えます。

  1. Window
  2. Preferences
  3. General
  4. Editors
  5. Text Editors
  6. Show Whitespace Characters


【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Version: Indigo Release

2011年7月7日木曜日

EclipseのEGitを使ってAndroidのSourceを取得する

EclipseのEGitを使ってAndroidのSourceを取得する

Eclipseの版が、HeliosからIndigoに上がりました。
この改版のアナウンスの中で、「EclipseでEGitが使える」という記事を読みましたので使ってみました。

私は、これまではsourceの取得方法が分からなくて、困難な方法で行いましたが、EGitを使えば簡単にandroidのsourceを取得できます。

インストール
EGitを使うには、まずEGitをインストールしなければなりません。
  1. Help>Eclipse Marketplace
  2. 画面下にあるオレンジ色の○印に「Yoxos Marketplace」と書かれているものをクリックする。
  3. 「Search」欄に「Eclipse EGit」欄がある。その右に「Install」があるのでクリックする。


使い方
  1. File>Import>
  2. Git>Projects from Git>Next
  3. "Check Home Directory"は無視してokを押す。
  4. clone
  5. 「URI」欄に次のとおり入力する。
    git://android.git.kernel.org/platform/frameworks/base.git
  6. next
  7. 「Clone Git Repository」画面>「Branch Selection」画面が出る。
  8. Cupcake,donut,Eclair,Froyo,gingerbread といった文字列の中から、自分が欲しい版を選択する。
  9. Next
  10. 「Local Destination」画面の「Directory」画面で出力先を選択する。出力先は、android SDKディレクトリ内の、platformsディレクトリ内の、対応するAPI level名のディレクトリを指定する。
    例えば、Froyoを選択した場合は、Android-8ディレクトリを選択する。
  11. Next>Finish
  12. 作業が終わるまで待つ
  13. javaのプログラム内で、sourceを表示したい適当なキーワード(例えば、"Activity")にカーソルを当てて、F3キーを押す。
  14. 「Source not found」画面が出る。「Change Attached Source」ボタンを押す。
  15. 「Source Attachment Configulation」画面の「External Folder」ボタンを押す。
  16. 先ほど選択したAndroid-8ディレクトリの下にbaseディレクトリが作成されているので、それを選択する。okする。
  17. 再度、任意のキーワードの箇所でF3キーを押し、sourceが表示されるのを確認する。
API Levelと、androidの版と、その名前との対応関係は次のとおりです。

3    1.5    cupcake
4    1.6   donut
      2.0    Eclair
      2.1    Eclair
8    2.2    Froyo
9    2.3    gingerbread


これを書いた時点では上記のとおりで上手くいったのですが、時間の経過とともにコマンドが変化しており、上記のままでは上手くいきません。
特に、上記のURIだと失敗するかもしれません。

【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Version: Indigo Release

2011年7月1日金曜日

Error parsing XML: no element found

Error parsing XML: no element found

XMLファイルにおいて上記エラーが発生しました。
色々な解決方法がネットに掲載されています。
XMLファイルの内容には、文法上の誤りとかは、一切ありません。

私は、当該ファイルをsaveし、closeする(ファイルを閉じる)と、このエラーは発生しなくなりました。

全く意味が分からないエラーです。eclipseのバグかもしれません。

【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Version: Indigo Release