Is Icepick Broken?

I tried some very simple tests with a fragment. But Icepick doesn't seem to store the value of the String test in the outState package ...

public class MyFragment extends Fragment { @Icicle String test; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this,savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_settings, container, false); Log.d(TAG,"restored value of test="+test); return view; } @Override public void onSaveInstanceState(Bundle outState) { test="I have a value"; super.onSaveInstanceState(outState); Icepick.saveInstanceState(this,outState); Log.d(TAG, "test="+test); } 

My gradle build looks like this:

 apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.my31daychallenge.mysleepchallenge" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0' compile 'com.jakewharton.threetenabp:threetenabp:1.0.1' apt 'com.bluelinelabs:logansquare-compiler:1.1.0' compile 'com.bluelinelabs:logansquare:1.1.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'frankiesardo:icepick:3.0.0' provided 'frankiesardo:icepick-processor:3.0.0' } 

Note. I tried the latest version of Icepick 3.0.2 and 3.0.3-SNAPSHOT, none of them worked, so I decided to use an earlier version with the same result.

and:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() maven {url "https://clojars.org/repo/"} } } 

What am I missing?

+5
source share
3 answers

Ok, I literally started looking at the IcePick library 5 minutes ago, so keep that in mind if this is a stupid answer :)

How to do it https://github.com/frankiesardo/icepick/commit/f60b4b9c0307be208178381661ee13b958eda531 it looks like @State should be used instead of @Icicle. Does your problem solve?

+4
source

In the build.gradle file for this line provided 'frankiesardo:icepick-processor:3.0.0' change provided to apt . That should do the trick.

Source: https://github.com/frankiesardo/icepick/issues/56

+7
source

put

 Icepick.restoreInstanceState(this, savedInstanceState); 

in onCreateView() (instead of onCreate )

0
source

All Articles