From 1ed49dd8f77c90d5ab7a5d3950bbd982f03f070b Mon Sep 17 00:00:00 2001 From: EGE Date: Thu, 17 Nov 2016 13:58:03 +0300 Subject: [PATCH] onSaveInstanceState method is overridden to save position. --- .../segmentedbutton/SegmentedButtonGroup.java | 23 ++++++++++++++++++ .../ceryle/segmentedbutton/MainActivity.java | 24 +++++++++++++++---- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/co/ceryle/segmentedbutton/SegmentedButtonGroup.java b/library/src/main/java/co/ceryle/segmentedbutton/SegmentedButtonGroup.java index 0ccd91a..1ea8d02 100644 --- a/library/src/main/java/co/ceryle/segmentedbutton/SegmentedButtonGroup.java +++ b/library/src/main/java/co/ceryle/segmentedbutton/SegmentedButtonGroup.java @@ -24,6 +24,8 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.os.Build; +import android.os.Bundle; +import android.os.Parcelable; import android.support.v4.content.ContextCompat; import android.support.v4.view.animation.FastOutLinearInInterpolator; import android.support.v4.view.animation.FastOutSlowInInterpolator; @@ -347,6 +349,8 @@ private void toggle(int position, int duration) { if (null != onClickedButtonPosition) onClickedButtonPosition.onClickedButtonPosition(position); + + this.position = position; } private boolean hasWidth = false; @@ -791,4 +795,23 @@ public Interpolator getInterpolatorSelector() { public int getMargin() { return margin; } + + @Override + public Parcelable onSaveInstanceState() { + // Log.d(TAG, "onRestoreInstanceState: " + position); + Bundle bundle = new Bundle(); + bundle.putParcelable("state", super.onSaveInstanceState()); + bundle.putInt("position", position); + return bundle; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + if (state instanceof Bundle) { + Bundle bundle = (Bundle) state; + position = bundle.getInt("position"); + state = bundle.getParcelable("state"); + } + super.onRestoreInstanceState(state); + } } diff --git a/sample/src/main/java/co/ceryle/segmentedbutton/MainActivity.java b/sample/src/main/java/co/ceryle/segmentedbutton/MainActivity.java index e252cf6..f95eb8b 100644 --- a/sample/src/main/java/co/ceryle/segmentedbutton/MainActivity.java +++ b/sample/src/main/java/co/ceryle/segmentedbutton/MainActivity.java @@ -7,24 +7,38 @@ public class MainActivity extends AppCompatActivity { - private int position = 1; + private Button button; + private SegmentedButtonGroup group; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - final SegmentedButtonGroup group = (SegmentedButtonGroup) findViewById(R.id.segmentedButtonGroup); - group.setPosition(position, false); + group = (SegmentedButtonGroup) findViewById(R.id.segmentedButtonGroup); + button = (Button) findViewById(R.id.button); + + updateButton(group.getPosition()); + + group.setOnClickedButtonPosition(new SegmentedButtonGroup.OnClickedButtonPosition() { + @Override + public void onClickedButtonPosition(int position) { + updateButton(position); + } + }); - final Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + int position = group.getPosition(); position = ++position % 3; - button.setText("Position: " + position); + updateButton(position); group.setPosition(position, true); } }); } + + private void updateButton(int position) { + button.setText("Position: " + position); + } }