Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Es Icepick roto?

He probado algunas pruebas muy simples con un fragmento. Pero Icepick no parece estar guardando el valor de la prueba String en el paquete outState …

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); } 

Mi versión de gradle se ve así:

 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' } 

Nota, He intentado la última versión de Icepick 3.0.2 y 3.0.3-SNAPSHOT, ninguno de ellos funcionó, así que pensé en usar una versión anterior con el mismo resultado.

y también:

 // 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/"} } } 

¿Qué me estoy perdiendo?

3 Solutions collect form web for “¿Es Icepick roto?”

En su archivo build.gradle, para esta línea se provided 'frankiesardo:icepick-processor:3.0.0' cambio provided a apt . Eso debería hacer el truco.

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

Ok, literalmente comencé a mirar a la biblioteca IcePick hace 5 minutos, así que tenlo en cuenta si esta es una respuesta estúpida 🙂

A partir de este commit https://github.com/frankiesardo/icepick/commit/f60b4b9c0307be208178381661ee13b958eda531 parece que @State debe utilizarse en lugar de @Icicle. ¿Resuelve esto su problema?

ponga su

 Icepick.restoreInstanceState(this, savedInstanceState); 

En onCreateView() (en lugar de en onCreate )

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.