Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

prevent activity restarting when orientation changes

I am new to android development .I have separate screens for portrait and landscape mode.When i change my orientation corresponding screen gets loaded and activity restarts . Now i do not want my activity to restart when i change the orientation but should load its corresponding screen(axml).

I have tried

[Activity (Label = "MyActivity",ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation)]

the above line stops activity getting restarted but it loads the same screen(axml). Please suggest . thanks

like image 524
sujay Avatar asked Jul 30 '13 10:07

sujay


2 Answers

Write this code in your activity

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscapeView);

    } else {
        setContentView(R.layout.portraitView);
    }
}

And also add this line in your Manifest file

android:configChanges="orientation|keyboardHidden|screenSize"

So this will handle both things, it will not restart your activity and will load the layout as per your orientation changes.

like image 117
Nirali Avatar answered Oct 17 '22 08:10

Nirali


Since you have specified to the OS that you want to handle orientation change yourself, now you have to handle any changes to the layout yourself, like this:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        setContentView(R.layout.portrait);
        //do other initialization
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscape);
        //do other initialization
    }
}
like image 44
Kai Avatar answered Oct 17 '22 07:10

Kai