How to prenvent recreate activity when screen is locked?

Orlando

Member
Licensed User
Longtime User
How to prevent recreate activity when screen is locked?

Hi, On android 2.2 i've a problem, but on Android 4 doesn't.

When i lock the screen...or screen is turned off/on the Activity_Create is fired and i get the follow error, also, i lost all data entered on this activity (form).

I know this is because the activity is destroyed and need to be recreated. Recreate isn't a problem, the problem is that i lost all data. How can i prevent this?

ALSO, Can i Catch the power or lock screen button?


please help :sign0148:


B4X:
** Activity (main) Pause, UserClosed = false **
** Activity (editor) Create, isFirst = true **
** Activity (editor) Resume **
** Activity (editor) Pause, UserClosed = false **
** Activity (editor) Create, isFirst = false **
editor_activity_create (B4A line: 57)
lblCentralName.Text = Main.strSubEstacion
java.lang.RuntimeException: Object should first be initialized (Label).
   at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:45)
   at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:38)
   at gruposaesa.orlando.gendrive.editor._activity_create(editor.java:284)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:165)
   at gruposaesa.orlando.gendrive.editor.afterFirstLayout(editor.java:84)
   at gruposaesa.orlando.gendrive.editor.access$100(editor.java:16)
   at gruposaesa.orlando.gendrive.editor$WaitForLayout.run(editor.java:72)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Label).
** Activity (editor) Resume **
editor_activity_resume (B4A line: 136)
lblCentralName.Text = Main.strSubEstacion
java.lang.RuntimeException: Object should first be initialized (Label).
   at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:45)
   at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:38)
   at gruposaesa.orlando.gendrive.editor._activity_resume(editor.java:373)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:165)
   at anywheresoftware.b4a.BA.raiseEvent(BA.java:149)
   at gruposaesa.orlando.gendrive.editor$ResumeMessage.run(editor.java:210)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at anywheresoftware.b4a.Msgbox.waitForMessage(Msgbox.java:211)
   at anywheresoftware.b4a.Msgbox.msgbox(Msgbox.java:136)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:202)
   at gruposaesa.orlando.gendrive.editor.afterFirstLayout(editor.java:84)
   at gruposaesa.orlando.gendrive.editor.access$100(editor.java:16)
   at gruposaesa.orlando.gendrive.editor$WaitForLayout.run(editor.java:72)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Label).
** Activity (editor) Pause, UserClosed = false **
** Activity (editor) Create, isFirst = false **
editor_activity_create (B4A line: 57)
lblCentralName.Text = Main.strSubEstacion
java.lang.RuntimeException: Object should first be initialized (Label).
   at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:45)
   at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:38)
   at gruposaesa.orlando.gendrive.editor._activity_create(editor.java:284)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:165)
   at gruposaesa.orlando.gendrive.editor.afterFirstLayout(editor.java:84)
   at gruposaesa.orlando.gendrive.editor.access$100(editor.java:16)
   at gruposaesa.orlando.gendrive.editor$WaitForLayout.run(editor.java:72)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Label).
** Activity (editor) Pause, UserClosed = false **
** Activity (editor) Create, isFirst = false **
editor_activity_create (B4A line: 57)
lblCentralName.Text = Main.strSubEstacion
java.lang.RuntimeException: Object should first be initialized (Label).
   at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:45)
   at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:38)
   at gruposaesa.orlando.gendrive.editor._activity_create(editor.java:284)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:165)
   at gruposaesa.orlando.gendrive.editor.afterFirstLayout(editor.java:84)
   at gruposaesa.orlando.gendrive.editor.access$100(editor.java:16)
   at gruposaesa.orlando.gendrive.editor$WaitForLayout.run(editor.java:72)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Label).
** Activity (editor) Pause, UserClosed = false **
** Activity (editor) Create, isFirst = false **
editor_activity_create (B4A line: 57)
lblCentralName.Text = Main.strSubEstacion
java.lang.RuntimeException: Object should first be initialized (Label).
   at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:45)
   at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:38)
   at gruposaesa.orlando.gendrive.editor._activity_create(editor.java:284)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at anywheresoftware.b4a.BA.raiseEvent2(BA.java:165)
   at gruposaesa.orlando.gendrive.editor.afterFirstLayout(editor.java:84)
   at gruposaesa.orlando.gendrive.editor.access$100(editor.java:16)
   at gruposaesa.orlando.gendrive.editor$WaitForLayout.run(editor.java:72)
   at android.os.Handler.handleCallback(Handler.java:587)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Label).

This is mi manifest file
B4X:
AddManifestText(
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15"/>
<supports-screens android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true"
   android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|uiMode|screenSize|"
    android:anyDensity="true"/>
   
   <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.BLUETOOTH"/>
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.GET_TASKS" />
   <uses-permission android:name="android.permission.SET_WALLPAPER" />
    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
   <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
   <uses-permission android:name="android.permission.WRITE_SETTINGS"/>

   
   )
   
   AddActivityText(main,
   <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.CLOCK" />
   </intent-filter>

) 
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
 
Last edited:

pluton

Active Member
Licensed User
Longtime User
You must post part of code not your error log

First I see this error with Label.
B4X:
Object should first be initialized (Label)

Where did you put your
B4X:
Dim Label As Label
Label.Initialize ' If you added Label in designer then you don't need to initalize

Second:
When app start it first fires
Sub Activity_Create(FirstTime As Boolean)

but when screen go off save you progress (form) in
Sub Activity_Pause (UserClosed As Boolean)

and when you turn it on then first fires
Sub Activity_Resume
In resume take back your data and automaticly fill it forms
 
Upvote 0

Orlando

Member
Licensed User
Longtime User
You must post part of code not your error log

First I see this error with Label.
B4X:
Object should first be initialized (Label)

Where did you put your
B4X:
Dim Label As Label
Label.Initialize ' If you added Label in designer then you don't need to initalize

Second:
When app start it first fires
Sub Activity_Create(FirstTime As Boolean)

but when screen go off save you progress (form) in
Sub Activity_Pause (UserClosed As Boolean)

and when you turn it on then first fires
Sub Activity_Resume
In resume take back your data and automaticly fill it forms



Thanks, but i fix it. i added this line to my manifest file in each activity:

B4X:
SetActivityAttribute(main, android:configChanges, "orientation")

SetActivityAttribute(editor, android:configChanges, "orientation")
 
Upvote 0
Top