在屏幕旋转后,虽然我在onCreate()
super.onCreate(null);,中传递null,但我得到了objectLinearLayout
返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常?
onCreate()代码段,其中LinearLayout
名为historyText的对象
LinearLayout historyText ; // this return exception if it used after rotation .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
setContentView(R.layout.activity_main);
historyText = (LinearLayout) findViewById(R.id.historyLayoutText);
Log.e("HISTORYVISIBILITY", "VISIBILITY = "+historyText.getVisibility());
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
database = new Database(this);
Bundle extras = getIntent().getExtras();
intent = extras.getInt("activity");
p = new Progress();
getSupportFragmentManager().beginTransaction()
.add(R.id.group, p)
.commit();
orientation = getRotation();
switch (orientation){
case "p" :
addPlus();
}
}
Logcat
10-07 22:21:24.365: E/AndroidRuntime(7768): FATAL EXCEPTION: main
10-07 22:21:24.365: E/AndroidRuntime(7768): Process: developer.mohab.gymee, PID: 7768
10-07 22:21:24.365: E/AndroidRuntime(7768): java.lang.RuntimeException: Unable to start activity ComponentInfo{developer.mohab.gymee/developer.mohab.gymee.Cardio.Cardio}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.LinearLayout.getVisibility()' on a null object reference
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4053)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.access$900(ActivityThread.java:156)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.os.Handler.dispatchMessage(Handler.java:102)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.os.Looper.loop(Looper.java:211)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.main(ActivityThread.java:5389)
10-07 22:21:24.365: E/AndroidRuntime(7768): at java.lang.reflect.Method.invoke(Native Method)
10-07 22:21:24.365: E/AndroidRuntime(7768): at java.lang.reflect.Method.invoke(Method.java:372)
10-07 22:21:24.365: E/AndroidRuntime(7768): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
10-07 22:21:24.365: E/AndroidRuntime(7768): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
10-07 22:21:24.365: E/AndroidRuntime(7768): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.LinearLayout.getVisibility()' on a null object reference
10-07 22:21:24.365: E/AndroidRuntime(7768): at developer.mohab.gymee.Cardio.Cardio.onCreate(Cardio.java:76)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.Activity.performCreate(Activity.java:5990)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
10-07 22:21:24.365: E/AndroidRuntime(7768): ... 11 more
10-07 22:21:24.633: E/SurfaceFlinger(319): rejecting buffer: bufWidth=1358, bufHeight=624, front.active.{w=193, h=193}
旋转设备时,活动及其上的所有片段将被销毁。为了避免这种情况,您应该修改AndroidManifest.xml
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
这将防止例外
实现在竖屏的NavigationController中push一个横屏的UIViewController,模拟器测试兼容5.0、6.0系统。实现程序中手动旋转屏幕的效果。 [Code4App.com]
我有一个应用程序小部件,当它更新时,获取具有与小部件匹配的维度的图像,并将该图像放入(通过)。它工作得很好。 但是对于支持主屏幕旋转的设备(我不是说基于设备方向的
我想在模拟器上测试手机的旋转,我看到我们必须使用CtrlF11的所有地方,但它只旋转模拟器的图像,不会启动配置更改事件或重新绘制活动。 下面是我用CtrlF11得到的: 那么,我必须用什么来模拟真实的旋转呢?
本文向大家介绍Flutter 控制屏幕旋转的实现,包括了Flutter 控制屏幕旋转的实现的使用技巧和注意事项,需要的朋友参考一下 最近需要做个平板的项目,然后需要直接横屏,有2种实现方式。 1, 随着屏幕旋转,布局自动调整。做横竖屏适配 2,强制屏幕横屏,不随着屏幕去调整 第一种方式这里就不做说明了。代码做适配就可以。 下面说一下第二种实现方式 Flutter 自带方式 flutter 为我们提
问题内容: 假设我有这样的活动: 视图模型为: 我想正确处理旋转,因此,如果用户在倒数计时为5时旋转设备,我希望旋转后的下一个值为5(如果第二个已经过去,则为4),只要在倒数应该实际出现的任何地方取。 如果火箭已经升空,我希望它在旋转后保持这种状态,我不希望倒计时再次开始。 此刻,暂停时取消订阅,恢复时进行新订阅,因此倒计时重新开始。 我猜想我应该在代码的RxJava部分中进行一些更改才能使其正常
问题内容: 我在处理s和屏幕旋转时仍在尝试找到“正确的”设计模式。我读了这篇链接到此代码的通用博客文章,但现在不建议使用onRetainNonConfigurationInstance方法。文档中的妙语是:“保证在切换到下一个活动期间不处理任何消息,从而简化了对活动对象的使用…”,这是此方法的真正重要组成部分。我看不到使用setRetainInstance()能够实现相同目标的建议。 建议在此处查