Skip to content

Instantly share code, notes, and snippets.

@SalaSuresh
Created June 3, 2020 18:03
Show Gist options
  • Save SalaSuresh/5a2d7d51105efefafa854d2d8ed03aed to your computer and use it in GitHub Desktop.
Save SalaSuresh/5a2d7d51105efefafa854d2d8ed03aed to your computer and use it in GitHub Desktop.
This is the demo code to maintain the same data after changing orientation of application in Android. (This contains 2 sample code one onSaveInstanceState and another is using ViewModel)
package com.suresh.androidpractice.orientationchange;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProviders;
import com.suresh.androidpractice.R;
public class DemoActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_common);
TextView textViewDemo = findViewById(R.id.text_common);
textViewDemo.setVisibility(View.VISIBLE);
DemoActivityViewModel model = ViewModelProviders.of(this).get(DemoActivityViewModel.class);
// DemoActivityViewModel model = new DemoActivityViewModel();
String myRandomNumber = model.getUUID();
textViewDemo.setText(myRandomNumber);
}
}
package com.suresh.androidpractice.orientationchange;
import androidx.lifecycle.ViewModel;
import java.util.UUID;
public class DemoActivityViewModel extends ViewModel {
private String myRandomNumber;
public String getUUID() {
if (myRandomNumber == null) {
myRandomNumber = "Generated Id: " + UUID.randomUUID().toString().replace("-", "");
}
return myRandomNumber;
}
@Override
protected void onCleared() {
super.onCleared();
}
}
package com.suresh.androidpractice.orientationchange;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.suresh.androidpractice.R;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
private String randomUUID = "";
private static final String KEY_UUID = "UUID";
private static final String TAG = "orientation_demo";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_common);
TextView textViewDemo = findViewById(R.id.text_common);
textViewDemo.setVisibility(View.VISIBLE);
textViewDemo.setText("Orientation change demo");
randomUUID = (savedInstanceState == null) ? getUUID() : savedInstanceState.getString(KEY_UUID);
textViewDemo.setText(randomUUID);
Log.e(TAG, "OnCreate: randomUUID: " + randomUUID);
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.e(TAG, "onConfigurationChanged() called with: newConfig = [" + newConfig + "]");
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
Log.e(TAG, "onSaveInstanceState() called with: outState = [" + outState + "]");
outState.putString(KEY_UUID, randomUUID);
Log.e(TAG, "Random UUID saved");
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.e(TAG, "onRestoreInstanceState() called with: savedInstanceState = [" + savedInstanceState + "]");
Log.e(TAG, "Restored Random UUID: " + savedInstanceState.getString(KEY_UUID));
}
private String getUUID() {
return "Generated Id: " + UUID.randomUUID().toString().replace("-", "");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment