2011年10月08日

とんだチキン野郎だぜっ!とViewのsetVisibility

もうバグや仕様上の欠陥が出ては潰しの出ては潰しの繰り返しにほとほとうんざりして、ついに決心しました。
このバグとの追いかけっこの主な原因は今回データのリンク機能をつけているのですが、エンコードの判定に自信がないところからコピーを持つという理由でオリジナルデータをアプリのフォルダに取り込んでからリンクするというオプションを設定したのです。

しかし、作ってみてから(笑)やはり取り込んだデータも削除しないといけないよな、と思い、アプリ上での削除や移動に応じて取り込んで階層化ディレクトリに保存してあるファイルも削除/移動するようにしたのです。
ここでバグがでると、いちいち実際のファイルの存在を確認する作業も必要になって、半端じゃない作業量(もっと賢いやり方はあったのかも)。
そもそもL----Note自体階層化しているので、他のメモ帳系アプリより確認作業は多いのではないかと思われるところにもってきて、自分のへボさで倍加された確認作業の繁雑さに負けました。

ここまでも様々な機能やアイディアを諦めてきているのですが、この取り込みリンクに関してはここだけで3週間以上かかっているのではないかという問題児。
ということで、ついに取りやめることにしました。
といっても、完全な敗北を認めたくないので、「今度こそ完璧!」(これを何度繰り返したことか(涙))という状態にしてから放棄しました。(無駄でかつ非効率的な行動)
それでもまだバグが出るかも知れませんが、機能を無効にしてしまえば、少なくとも外には分からない(はず)。
多大なコストをかけつつ無効にするのは惜しいですが、万が一とはいえ(自動ファイルデリートの機能があると)自アプリ以外のファイルを消す危険性をなくす方が心は安らかになります。それに、これも後から気づいたのですが、バックアップ/リストアを繰り返すとデータの整合性がなくなってしまいますからね。

無駄に容量はとってしまって、ユーザーには申し訳ない限りですが、複雑に絡み合った自動ファイル操作の部分をコードから綺麗に取り除くには時間がかかりそうなので(仕分けされた公的事業のようですね(笑))、ここはOOの時に覚えた便利技を使いました。
以前はこれを知らず悩んでいたのですが、オプションのチェックボックスをなくすために下記コード。

final CheckBox checkBox = (CheckBox)confirmView.findViewById(R.id.checkBox);
checkBox.setVisibility(checkBox.GONE);

これで、xmlファイルにCheckBoxが記載してあっても表示されなくなり、このチェックボックスがなければファイル取り込み機能もないも同じになりました。.INVISIBLEと.GONEの違いはINVISIBLEだとチェックボックスのあった空間は空いてしまうのに対してGONEはそのスペースもなくしてくれるということのようです。TextViewとかの他のViewにも使えるので大変便利ですよね。

それにしても、まったくとんだチキン野郎ではありますが、これですぐにアップデート公開という訳にもいかず、文字エンコードに関する自信のなさを埋める別な方法を取る予定なので、まだ時間はかかります。

(これからも愚痴は)つづく……

posted by 白虹 at 00:38| Comment(0) | TrackBack(0) | Android開発
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/48373874

この記事へのトラックバック