忍者ブログ
やったことの記録 主にlinuxとかperlとか
プロフィール
HN:
隠居SE
性別:
非公開
カテゴリー
P R
ブログ内検索
忍者カウンター
[23] [22] [21] [19] [18] [17] [16] [15] [14] [13] [12]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

いくつかのカスタムビューでParcelableを使ってデータを退避してる筈なのに、
何故か一部のカスタムビューだけデータが復元できませんでした。

追いかけてみると、onSaveInstanceStateやonRestoreInstanceStateのイベント自体は発生しているのですが、writeToParcelが呼び出されず、データが保存されていない様子。
リソースIDが割り当てられていなかったり重複していると正しく保存されないことは知っていたので、
真っ先に確認するも、他では使っていない判りやすい名前を使っているので、重複は考えにくい。

でも、よくよく探してみると、重複してました( ̄∇ ̄*)ゞテヘッ

元々Activityに直接書いていた複雑な構造のビューを切り出してカスタムビューにしたので、
カスタムビュー自体にIDがセットされていて、
そのカスタムビューをActivityに載せた時に、そちらにも同じIDをセットしてしまっていました。
その結果、ひとつのビューに2つのIDが振られてしまい、
正しく保存できなくなっていたようです。

activity.xml
  <jp.foo.bar.mycustomview
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/myCustomView" />

custumview.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:id="@+id/myCustomView">  ←これが余計

</relativelayout>

半日無駄にした(^^;




#AndroidStudio #Parcelable
PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Powerd by NINJAブログ / Designed by SUSH
Copyright © 隠居SEの備忘録 All Rights Reserved.
忍者ブログ/[PR]