Androidアプリ用にActionScriptからJavaに書き換えるのにハマったポイント

先日も紹介したように、Androidアプリ「逆YouMe」を公開しました。
今回は、先にFlash Builder Burritoでモックアップを作成して、それを元にJavaへ書き換えました。

先にロジックさえ組んでおけば必要な部分だけ掻い摘んでやればいいだろうと考えてましたが、思ったよりも言語の違いの壁に苦労しました。
Android SDK特有のハマりポイントは他のブログにお任せするとして、ActionScript(以後ASと表記)からJavaに書き換えるときにハマったポイントについて記録しておこうと思います。

str.charAt()とStringが比較できない

ASではcharAt()はString型が返ってきますが、Javaではchar型が返ってきます。
なので、char型で比較する必要があります。

ASの場合

var str:String = "hoge";
var len:int = str.length;
var cnt:int = 0;

for(var i:int = 0;i < len;i++){
     if(str.charAt(i) == "h"){
          cnt++;
     }
}

trace(cnt); //1

Javaの場合

String str = "hoge";
int len = str.length();
int cnt = 0;

for(int i = 0;i < len;i++){
     if(str.charAt(i) == 'h'){ //ダブルクォートだとString型、シングルクォートだとchar型
          cnt++;
     }
}

Log.d("cnt", String.valueOf(cnt)); //1

今回は逆さ読みに変換するのに改行コードと比較する際に使いました。

EditText内の文字が空の場合は

FlashではTextInput内に何も入力されてない状態は空(”")と比較するとtrueが返ってきますが、Javaでは空・undefinedと比較してもfalseが返ってきます。
なので、length()で文字数を数えて比較してあげます。

ASの場合

protected function button1_clickHandler(event:MouseEvent):void
{
     if(ti.text == ""){
          label.text = "true";
     }else{
          label.text = "false";
     }
}

<s:TextInput id="ti"/>
<s:Button label="ボタン" click="button1_clickHandler(event)"/>
<s:Label id="label" width="100%"/>

Javaの場合

final EditText e = (EditText)findViewById(R.id.editText1);
Button btn = (Button)findViewById(R.id.button1);
final TextView t = (TextView)findViewById(R.id.textView1);

btn.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
          if(e.length() == 0){
               t.setText("true");
          }else{
               t.setText("false");
          }
     }
}

リソース

<EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/editText1"/>
<Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"/>

lengthで比較する方法はASでも可能ですよ。
今回は変換するためのテキストを入力してない場合はConvertボタンを押せないようにするために使いました。

よし、書くぞーと思ったものの、特に凝ったアプリでもないので、どう探してもこれくらいしか見当たりませんね。
Android SDK特有のハマりポイントはかなり多かったんですが、、、

今回、初めてJavaを触ったせいかもしれませんが、ASは柔軟性の高い言語だなぁと感じました。
しばらくAndroidのことしか書いてませんが、次回のWEB TOUCH MEETINGでも話すことになっているので、まだまだ開発熱は続きそうです。


この記事をブックマーク・シェアする

この記事に関連する記事

カテゴリ

コメント

コメントを残す

コメント*

コメントリンクを nofollow free に設定することも出来ます。

誤字・脱字やリンク切れなどお気づきの点がございましたら@loop0429までよろしくお願いします。

この記事の先頭へ