当前位置: 首页 > 知识库问答 >
问题:

应用程序在手机上运行时崩溃,但在电脑上启动时工作正常

齐涛
2023-03-14
<activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity android:name=".ManageAccountActivity"/>
    <activity android:name=".RegionListActivity"/>
    <activity android:name=".ClubListActivity"/>
    <activity android:name=".SearchActivity"/>
    <activity android:name=".TeetimesListActivity"/>
    <activity android:name=".ConfirmationActivity"/>
    <activity android:name=".TermsAndConditionsActivity"/>
    <activity android:name=".TabletSearchActivity"/>
    <activity android:name=".TabletConfirmationActivity"/>
    <activity android:name=".PreferencesActivity"/>
01-08 16:08:47.194 26704-26704/ca.gggolf.aminutegolf E/ACRA: ACRA caught a RuntimeException for ca.gggolf.aminutegolf
                                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.gggolf.aminutegolf/ca.gggolf.aminutegolf.LoginActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
                                                             at android.app.ActivityThread.access$800(ActivityThread.java:155)
                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                             at android.os.Looper.loop(Looper.java:135)
                                                             at android.app.ActivityThread.main(ActivityThread.java:5343)
                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
                                                          Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
                                                             at ca.gggolf.aminutegolf.LoginActivity.checkForNewBooking(LoginActivity.java:676)
                                                             at ca.gggolf.aminutegolf.LoginActivity.onCreate(LoginActivity.java:112)
                                                             at android.app.Activity.performCreate(Activity.java:6010)
                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) 
                                                             at android.app.ActivityThread.access$800(ActivityThread.java:155) 
                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) 
                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                             at android.os.Looper.loop(Looper.java:135) 
                                                             at android.app.ActivityThread.main(ActivityThread.java:5343) 
                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                             at java.lang.reflect.Method.invoke(Method.java:372) 
                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

编辑3:添加包含错误的代码的一部分

private void checkForNewBooking() {
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        final String numConfirmation = extras.getString("NEWLY_BOOKED");
        final String date[] = extras.getString("BOOKING_DATE").split("-"); //line 676
        final String time[] = extras.getString("BOOKING_TIME").split(":");
        final String club = extras.getString("BOOKING_CLUB");
        final int hole = Integer.parseInt(extras.getString("BOOKING_HOLE"));

编辑4:更多代码。下面是onCreate()方法。对checkForNewBooking()方法的调用来自于此。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    Log.d(TAG, "onCreate()");

    mController = new ActivityController(this);

    // Setting server mode
    ((Globals) getApplication()).setServerInformation(SharedPrefManager.getServer(this));

    // Hide auto-triggered keyboard
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    if (SharedPrefManager.isFirstRun(LoginActivity.this)) {
        SharedPrefManager.setFirstTimePrefs(LoginActivity.this, Utility.retreiveLanguage());
        Log.d(TAG, "First run triggered.");
    }

    Bundle mBundle = getIntent().getExtras();
    if (mBundle != null) {
        if (mBundle.getBoolean("PROCESS_KILLED")) {
            Toast.makeText(LoginActivity.this, R.string.ui_error_killedprocess, Toast.LENGTH_LONG).show();
        } else {
            checkForNewBooking();
        }
    }
    initializeUI();

    WrappedLogger.setProvider(new LoggingProvider());
    WrappedLogger.setMemoryLog(false);
    IPAddressInformation.getInstance().getIPAddress();
}

共有1个答案

公羊学义
2023-03-14

所以这不是一个非常好的超级答案,但是我已经能够通过修改checkForNewBooking()中的第一个if语句来修复这个bug。现在是:

if(extras.getString("BOOKING_DATE") != null)

而不是

if(extras != null)

我真的不知道为什么这个节目是从这个开始的..我发布的部分类是主要的,在开始时启动,所以信息不会来自那里。根据我离开前的那个人的评论,这个方法旨在检查预订是否在过去完成,这意味着一旦预订完成,BOOKING_DATE和BOOKING_TIME所需的信息可能来自另一个方法。

 类似资料:
  • 该应用程序在API26模拟器中运行良好,没有任何意外行为,但在API23中崩溃。当应用程序启动时。我对android相当陌生,所以不太确定要做什么改变来适应API23。 这是我的年级

  • 问题内容: 我有以下代码: 在模拟器中工作正常。但是当我在手机上尝试时,它崩溃了。这是控制台: 这行: NSNumberFormatter()。numberFromString(display.text!)! 返回nil,这导致应用程序崩溃,导致无法打开可选包装。我真的不知道怎么了 我正在关注iTunes U中的一些教程。 任何帮助,将不胜感激。 问题答案: 尝试: 因为默认情况下使用设备区域设置

  • 我试图弄清楚为什么我正在开发的应用程序在我的设备上运行时立即开始崩溃(运行iOS6.1的苹果4)。我已经在这个应用程序上工作了大约8周,这个问题似乎是突然出现的。 当我在模拟器上运行应用程序时,它运行良好。当我尝试在我的设备上运行它时,它会崩溃,并在以下位置中断: 崩溃发生在App委托方法之前 有人打电话来。 我已经看过了设备崩溃日志,但我没有看到任何关于发生了什么的线索。有人知道我可以从哪里开始

  • 我已经尝试过几次升级flutter,但似乎也没有任何问题: 我最近换了笔记本电脑,并在这个新的笔记本上查看了我的代码的git存储库。有一些问题,但我最终解决了这些问题。唯一的区别是项目名称现在只是,而包名称是-但我认为这不会造成任何问题。 我的猜测是,问题出在我的中的某个地方:

  • 问题是,当我在Google中使用授权运行此代码时,它会立即崩溃: 但是日志中的错误: 2019-06-22 17:55:42.652 29327-23222/?E/AudioSource:在已关闭的AudioSource 2019-06-22 17:55:43.240 2093-2616/?E/TouchFilter:setTouchFilter日志启用参数:0 2019-06-22 17:55:

  • 自定义datePicker代码: 这就是我如何在我的主要活动中使用这个类: Logcat: