Android Question EditText Object should first be initialized

ANTONIO ALBEIRO VALENCIA

Member
Licensed User
Longtime User
File Designer Layout : configuracion

layout.png


I understand that controls created in a designer should not be initialized.

Code App B4A:
Private Sub ShowDialog
    
    Dim data As Map = sqlite.GetConfiguracion

    EditIP.Text         = data.Get(Main.K_HOST)
    EditDB.Text         = data.Get(Main.K_DB)
    EditUser.Text       = data.Get(Main.K_USER)
    EditPassword.Text    = data.Get(Main.K_PASS)
        
    Dim p As B4XView = xui.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, 310dip, 490dip) 'set the content size
    p.LoadLayout("configuracion")
    
    Dim cd As ColorDrawable
    cd.Initialize(Colors.White, 5dip)
    EditIP.Background = cd
    EditUser.Background = cd
    EditPassword.Background = cd
    EditDB.Background = cd
    EditIP.RequestFocus
    
    Dim list As List
    list.Initialize
    list.Add("2 = EN-PROCESO")
    list.Add("3 = TERMINADO")
    ComboBox1.SetItems(list)
    
    dialog.Title = "DATOS CONEXION"
    dialog.BackgroundColor = Colors.RGB(161, 182, 198)
    dialog.BorderCornersRadius = 5dip
    dialog.BorderWidth = 2dip
    dialog.ButtonsColor = Colors.RGB(107, 156, 193)
    dialog.ButtonsTextColor = Colors.White
    
    Dim rs As ResumableSub = dialog.ShowCustom(p, "Ok", "", "Cancel")
    Wait For (rs) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        
        Log(EditIP.Text)
        Log(EditUser.Text)
        Log(EditPassword.Text)
        Log(EditDB.Text)
        
        Dim cTipo As String = ComboBox1.SelectedItem
        Dim nTipo As Int = cTipo.SubString2(0, 2)
        
        Log("Tipo : " & nTipo & " / " & "Name :" & cTipo)
        
        TIPO_PROCESO = nTipo
        NAME_PROCESO = cTipo
        LblTitle.Text = NAME_PROCESO
        
        Dim map As Map
        map.Initialize
        map.Put(Main.K_HOST, EditIP.Text)
        map.Put(Main.K_DB, EditDB.Text)
        map.Put(Main.K_USER, EditUser.Text)
        map.Put(Main.K_PASS, EditPassword.Text)
        map.Put(Main.K_PROCESO, TIPO_PROCESO)
        
        Try
            sqlite.UpdateConfig(map)
            mysql.Initialize
        Catch
            Log(LastException)
        End Try
        
    End If
    
End Sub

IDE Logs:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
DATABASE SQLITE CORRECTA
/storage/emulated/0/Android/data/b4a.ordenes/files/SQLITE
No hubo conexion
*** mainpage: B4XPage_Created
*** mainpage: B4XPage_Appear
** Activity (main) Resume **
*** mainpage: B4XPage_PermissionResult [mainpage]
*** mainpage: B4XPage_PermissionResult [mainpage]
MainPage Appear
** Activity (main) Pause event (activity is not paused). **
*** mainpage: B4XPage_Disappear [mainpage]
*** mainpage: B4XPage_PermissionResult [mainpage]
*** mainpage: B4XPage_PermissionResult [mainpage]
*** mainpage: B4XPage_PermissionResult [mainpage]
** Activity (main) Resume **
*** mainpage: B4XPage_Appear [mainpage]
MainPage Appear
b4xmainpage$ResumableSub_ShowDialogresume (java line: 446)
java.lang.RuntimeException: Object should first be initialized (EditText).
Did you forget to call Activity.LoadLayout?
    at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:67)
    at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:39)
    at anywheresoftware.b4a.objects.EditTextWrapper.setText(EditTextWrapper.java:226)
    at b4a.ordenes.b4xmainpage$ResumableSub_ShowDialog.resume(b4xmainpage.java:446)
    at b4a.ordenes.b4xmainpage._showdialog(b4xmainpage.java:412)
    at b4a.ordenes.b4xmainpage._validapassword(b4xmainpage.java:694)
    at b4a.ordenes.b4xmainpage$ResumableSub_LeaPassword.resume(b4xmainpage.java:374)
    at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:275)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:215)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
    at anywheresoftware.b4a.keywords.Common$15.run(Common.java:1804)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:243)
    at android.os.Looper.loop(Looper.java:338)
    at android.app.ActivityThread.main(ActivityThread.java:8521)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1064)
 

josejad

Expert
Licensed User
Longtime User
Hi:

You're trying to set the text in the EditText before loading the layout. Move those lines below loadlayout.
 
Upvote 0
Top