2016-01-08 11 views
7

私のデバイスで古いアプリを稼働させるために3日間の作業を済ませた!しかし、私のコンピュータからコマンドが来たときだけ。携帯電話から起動するとアプリがクラッシュするが、パソコンから起動したときにうまく動作する

私は説明します。 Android Studioから携帯電話でアプリを起動すると、うまく起動します。これは素晴らしいことです。しかし私が自分の電話機から直接起動すると、CatlogにStringがnullであることがわかります。私はこれを引き起こす可能性が理解していない..それは、アプリケーションが私のコンピュータから起動されているが、電話からではなく、起動時に正常に動作します...

助けてください!

編集1:追加のAndroidManifest.xml活動

<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"/> 

編集2:エラーログ

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(); 
} 
+0

少なくとも、アプリケーションを起動するために使用しているアクティビティ宣言と実行コンフィギュレーションを明記してください –

+0

エミュレータとデバイスは同じオペレーティングシステムを使用していますか? – AdamMc331

+0

実行コンフィギュレーションはできるだけ早く実行できます。デプロイと起動は、インストールフラグも起動フラグもなく、デフォルトに設定されています。エミュレータの場合、私はコンピュータから何も実行していない、私のデバイス上で直接起動します。 – dequec64

答えて

1

ので)それは完全な偉大なスーパー答えではないのですが、私はcheckForNewBooking(であれば最初の文を変更するだけで、このバグを修正することができました。 は、今では次のとおりです。

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

代わりの

if(extras != null) 

プログラムはこれを始めた理由私は真剣に開始時に起動し、私はの部分を掲示クラスがメインの1 ..ですかわかりません情報はそこから来ない。私の前の人のコメントによると、この方法は過去に予約が完了したかどうかをチェックするためのもので、予約が完了した後、BOOKING_DATEとBOOKING_TIMEに必要な情報が別の方法から来ることを意味します。

とにかく、今は動作します!助けてくれてありがとう!

関連する問題