I have been looking for an solution on how to make my app not to loose data when orientation of phone changes. I have found one and it is adding this line of code
android:configChanges="orientation|keyboardHidden">
to android manifest. So i did it:
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
And my data still get lost when orientation changes, could anyone please help me ? Thank you very much.
My java code:
public class MainActivity extends AppCompatActivity {
int scoreofShooter1 = 0;
int scoreofShooter2 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void addOneForShooter1(View view) {
scoreofShooter1 = scoreofShooter1 + 1;
displayForShooter1(scoreofShooter1);
}
public void addTwoForShooter1(View view) {
scoreofShooter1 = scoreofShooter1 + 2;
displayForShooter1(scoreofShooter1);
}
public void addThreeForShooter1(View view) {
scoreofShooter1 = scoreofShooter1 + 3;
displayForShooter1(scoreofShooter1);
}
public void addFourForShooter1(View view) {
scoreofShooter1 = scoreofShooter1 + 4;
displayForShooter1(scoreofShooter1);
}
public void addOneForShooter2(View view) {
scoreofShooter2 = scoreofShooter2 + 1;
displayForShooter2(scoreofShooter2);
}
public void addTwoForShooter2(View view) {
scoreofShooter2 = scoreofShooter2 + 2;
displayForShooter2(scoreofShooter2);
}
public void addThreeForShooter2(View view) {
scoreofShooter2 = scoreofShooter2 + 3;
displayForShooter2(scoreofShooter2);
}
public void addFourForShooter2(View view) {
scoreofShooter2 = scoreofShooter2 + 4;
displayForShooter2(scoreofShooter2);
}
public void resetScoreOfShooter1(View view) {
scoreofShooter1 = 0;
displayForShooter1(scoreofShooter1);
}
public void resetScoreOfShooter2(View view) {
scoreofShooter2 = 0;
displayForShooter2(scoreofShooter2);
}
public void displayForShooter1(int score) {
TextView scoreView = (TextView) findViewById(R.id.shooter_1_score);
scoreView.setText(String.valueOf(score));
}
public void displayForShooter2(int score) {
TextView scoreView = (TextView) findViewById(R.id.shooter_2_score);
scoreView.setText(String.valueOf(score));
}
}