簡體   English   中英

B4A 中的錯誤:java.lang.RuntimeException:Object 應首先初始化(EditText)

[英]Error in B4A: java.lang.RuntimeException: Object should first be initialized (EditText)

我最近開始學習 B4A (Basic For Android),它是一個 IDE,可用於制作 Android 應用程序。

不幸的是,我在執行代碼時遇到了一個錯誤,我不知道如何修復它。

錯誤是:java.lang.RuntimeException: Object 應該首先被初始化(EditText)。

我不知道為什么會收到此錯誤,請幫忙!

代碼:

    #Region  Project Attributes 
    #ApplicationLabel: Chatbot
    #VersionCode: 1
    #VersionName: 
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
    #FullScreen: True
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Private xui As XUI
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    Public Label1 As Label
    Public TBox As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
End Sub

Sub Activity_Resume
    Activity.LoadLayout("Layout")
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
    Private Label1 As Label
    Private TBox As EditText
    If TBox.Text = "hello" Then 
        Label1.Text = "Hi!"
    Else 
        Label1.Text = "Invalid Command"
    End If
    End Sub

完整錯誤日志:

*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
main_button1_click (java line: 372)
java.lang.RuntimeException: Object should first be initialized (EditText).
    at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:67)
    at anywheresoftware.b4a.objects.TextViewWrapper.getText(TextViewWrapper.java:36)
    at b4a.example.main._button1_click(main.java:372)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
    at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
    at android.view.View.performClick(View.java:5638)
    at android.view.View$PerformClick.run(View.java:22430)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6198)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)

請幫忙!!!!

問題是由於您兩次加載布局而引起的。 Activity_Create 和 Activity_Resume 在應用啟動時都會被調用。

您可以在此處找到有關應用程序生命周期的更多信息: https://www.b4x.com/android/forum/threads/android-activity-lifecycle.105551/#post-661112

我還建議你看看使用 B4xPages - https://www.b4x.com/android/forum/threads/b4x-b4xpages-cross-platform-and-simple-framework-for-managing-multiple-pages.118901/后 743752

即使對於單頁應用程序,使用該框架的生命周期問題也不會成為問題。

ADDL:您在 Button1_Click 事件子中聲明 Label1 和 TBox,請嘗試刪除它們。 它們已經在 Globals 中聲明,不需要再次聲明。

您必須首先初始化文本框,然后使用:

textbox.initialize("EventName")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM