Reputation: 405
I have tried
android:screenOrientation="portrait"
and
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
but it is crashing the app, Is there any alternative method for this to work in Android 8.0.0+?
Logcat:
FATAL EXCEPTION: main
Process: in.ajtech.finX, PID: 15077
java.lang.RuntimeException: Unable to start activity ComponentInfo{in.ajtech.finX/in.ajtech.finX.CalendarActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.IllegalStateException: Only fullscreen activities can request orientation
at android.os.Parcel.readException(Parcel.java:1950)
at android.os.Parcel.readException(Parcel.java:1888)
at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation(IActivityManager.java:5675)
at android.app.Activity.setRequestedOrientation(Activity.java:5739)
at in.ajtech.finX.CalendarActivity.onCreate(CalendarActivity.java:55)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
Upvotes: 4
Views: 3213
Reputation: 215
I got the same error, when I tried to open activity as dialog inside another activity.
then I removed android:screenOrientation="portrait"
from dialog activity deceleration in my Manifest, and problem solved!
this is because the parent activity should be responsible for the orientation.
Upvotes: 0
Reputation: 417
You can set the property from you manifest file, inside each activity, add android:screenOrientation="portrait"
Upvotes: 0
Reputation: 15050
In AndroidManifest.xml
make the following changes:
For opaque activities, i.e. full-screen, set:
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar"
Note that the theme should be NOT Translucent.
For transclusent activities, i.e. pop-up dialogs etc, set:
android:screenOrientation="unspecified"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Note that screenOrientation is not specified here. You can use Translucent themes.
This works without downgrading SDK version.
Upvotes: 1
Reputation: 75788
Read Only fullscreen activities can request orientation
Only fullscreen activities can request orientation at android.app.ActivityThread.performLaunchActivity
You should use AppCompatActivity
instead of Activity
.
let your activity extend AppCompatActivity
.
JAVA
public class YourActivity extends AppCompatActivity {
// ...
}
Kotlin
class YourActivity : AppCompatActivity()
FYI
Beginning with Android 3.0 (API level 11), all activities that use the default theme have an ActionBar as an app bar. However, app bar features have gradually been added to the native ActionBar over various Android releases. As a result, the native ActionBar behaves differently depending on what version of the Android system a device may be using. By contrast, the most recent features are added to the support library's version of Toolbar, and they are available on any device that can use the support library.
From Setting Up the App Bar
.
DEMO
Set your style
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>
Upvotes: 4
Reputation: 405
Repacing extents Activity
to AppCompatActivity
fixed the issue. Thank you for all your help
Upvotes: 0
Reputation: 2538
It's android sdk(27) issue , you can't use portrait
with Translucent
so reduce your target sdk to 26
or remove Translucent
theme or remove portrait
mode.
Upvotes: 1