<< 前 ホーム 次 >>

bakaid: 20121201

AndroidのEditTextがアンドゥをサポートしてなくって。
自前でやるしかない。TextWatcherでイベントは拾える。
それがまたわかりにくいAPIなんだけど。ハマったのはそこ
じゃなくって、エミュレータでの動き。

たとえば"ab"と入力した後にアンドゥすると"a"になる。
そこまでは思惑どおり。でも、その後、"c"を入力すると、
"abc"となる。アンドゥで消したはずの"b"が、キーボード
から入力するとなぜか復活する。

なんでだろう、なんでだろう?Spannableとか関係してる?
他のエディタはどうやってるんだろう?あれ?EditText
使ってないエディタが結構多い?あれ?やっぱりこの
エディタのコードでも復活しちゃうな。おいおい、4.2にも
なって、まだこんなマヌケなバグが残ってんのかよ?

はい、エミュレータのバグでした。Nexus7で試すと、そんな
現象は起きませんでした。

https://github.com/tkojitu/UndoDemo

最初は「アンドゥといえばCommandパターンだろ、jk」
みたいな感じで実験してたんだけど、それだとコンテキスト
メニューからの編集には対応できないわけで。

TextWatcherでイベント拾って。TextWatcherっていうのは、
beforeの部分がafterに置き換えられるというイベント。
なので、アンドゥはその逆置換をやってやればいい。
リドゥは、もう一度同じ置換をやってやればいい。ただし、
アンドゥもリドゥもTextWatcherがイベントを拾うので、
それは無視しないといけない。

--

しかし、Androidのアプリでソースが公開されてるのは、
そのまま持ってきてもビルドできないのが多い。

--

Googleは、Androidのドキュメントをそろえるつもりが
ないらしい。developer.android.comは、MSDN並みに
よく変わり、MSDN並みに役立たず。APIドキュメントは
しっかり書かれているのが救いなんだけど。

ちょっと前まではチュートリアルがあったんだけど、
一掃された。ガイドはあるけど、ボンヤリした話しか
載ってない。コード見たけりゃSDKのサンプル見ろって
方針らしい。ところが、そのサンプルも、1つのプロジェクト
にたくさん詰め込みすぎてて、何が何やら。

ググれば引っかかるのはStackOverflowばかり。それを
信じていいかどうかもよくわからない。そういえば、
MSDNもまた変わって、StackOverflowを検索する
オプションがついた。ウザいだけ。

StackOverflowのようなQAサイトは、いってみればバッド
ノウハウの集積所なわけで、Javaチュートリアルのような
正当性や全体としての整合性というものがない。日本でも
後追いサイトがいくつか出てきたけど、そんなことやる
くらいならStackOverflowの日本語化に協力したほうが
まだしも建設的じゃないのかね。ニコ動ほど市場が広い
わけでもなかろうし、日本固有の事情があるわけでもないし、
さほど差別化ができると思えないし。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails