Skip to content

Commit

Permalink
Storing and restoring state before and after rotation
Browse files Browse the repository at this point in the history
  • Loading branch information
gliechtenstein committed Dec 15, 2016
1 parent 265f8b6 commit bd67a71
Showing 1 changed file with 53 additions and 2 deletions.
55 changes: 53 additions & 2 deletions app/src/main/java/com/jasonette/seed/Core/JasonViewActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Parcelable;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
Expand Down Expand Up @@ -72,6 +73,8 @@ public class JasonViewActivity extends AppCompatActivity{
private LinearLayout footerInput;
private View footer_input_textfield;

Parcelable listState;


/*************************************************************
*
Expand All @@ -86,6 +89,7 @@ protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


// Setup Layouts

// 1. Create root layout (Relative Layout)
Expand Down Expand Up @@ -168,8 +172,31 @@ protected void onCreate(Bundle savedInstanceState) {
// Create model
model = new JasonModel(url, intent, this);

// Fetch
model.fetch();
if(savedInstanceState != null) {
// Restore model and url
// Then rebuild the view
try {
url = savedInstanceState.getString("url");
model.url = url;
if(savedInstanceState.getString("jason")!=null) model.jason = new JSONObject(savedInstanceState.getString("jason"));
if(savedInstanceState.getString("rendered")!=null) model.rendered = new JSONObject(savedInstanceState.getString("rendered"));
if(savedInstanceState.getString("state")!=null) model.state = new JSONObject(savedInstanceState.getString("state"));
if(savedInstanceState.getString("var")!=null) model.var = new JSONObject(savedInstanceState.getString("var"));
if(savedInstanceState.getString("cache")!=null) model.cache = new JSONObject(savedInstanceState.getString("cache"));
if(savedInstanceState.getString("params")!=null) model.params = new JSONObject(savedInstanceState.getString("params"));
if(savedInstanceState.getString("session")!=null) model.session = new JSONObject(savedInstanceState.getString("session"));

listState = savedInstanceState.getParcelable("listState");

build();
} catch (Exception e){
Log.d("Error", e.toString());
}
} else {
// Fetch
model.fetch();
}

}


Expand Down Expand Up @@ -200,8 +227,32 @@ protected void onResume() {
firstResume = false;

super.onResume();

if (listState != null) {
listView.getLayoutManager().onRestoreInstanceState(listState);
}

}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
if(model.url!=null) savedInstanceState.putString("url", model.url.toString());
if(model.jason!=null) savedInstanceState.putString("jason", model.jason.toString());
if(model.rendered!=null) savedInstanceState.putString("rendered", model.rendered.toString());
if(model.state!=null) savedInstanceState.putString("state", model.state.toString());
if(model.var!=null) savedInstanceState.putString("var", model.var.toString());
if(model.cache!=null) savedInstanceState.putString("cache", model.cache.toString());
if(model.params!=null) savedInstanceState.putString("params", model.params.toString());
if(model.session!=null) savedInstanceState.putString("session", model.session.toString());

// Store RecyclerView state
listState = listView.getLayoutManager().onSaveInstanceState();
savedInstanceState.putParcelable("listState", listState);

super.onSaveInstanceState(savedInstanceState);
}


/*************************************************************
## Event Handlers Rule
Expand Down

0 comments on commit bd67a71

Please sign in to comment.