2016-01-08 10 views
7

Ich konnte nach 3 Tagen Arbeit eine alte App auf meinem Gerät ausführen lassen! Aber nur wenn der Befehl von meinem Computer kommt ...App stürzt ab, wenn sie vom Telefon ausgeführt wird, funktioniert aber einwandfrei, wenn sie vom Computer gestartet wird

erkläre ich. Wenn ich die App von Android Studio auf meinem Handy starte, startet es gut, was großartig ist. Aber wenn ich es direkt von meinem Telefon aus starte, bekomme ich in Catlog, dass ein String null ist. Ich verstehe nicht, was könnte dazu führen .. Es funktioniert gut, wenn die App von meinem Computer gestartet wird, aber nicht vom Telefon ...

Bitte, helfen Sie!

Edit 1: In AndroidManifest.xml Aktivitäten

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

Edit 2: Fehlerprotokoll

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)  

bearbeiten 3: einen Teil des Codes hinzufügen, die Fehler enthalten

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")); 

Bearbeiten 4: Mehr Code. Hier ist die onCreate() -Methode. Der Aufruf der Methode checkForNewBooking() kommt von dort.

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

Bitte geben Sie mindestens die Aktivitätsdeklarationen und die Ausführungskonfiguration ein, die Sie auf Ihrem Computer verwenden, um die App zu starten. –

+0

Sind der Emulator und das Gerät mit dem gleichen Betriebssystem? – AdamMc331

+0

Die Run-Konfiguration ist der Standard, den es sein kann. Deploy und Launch werden standardmäßig ohne Installations- oder Startflags festgelegt. Für den Emulator starte ich keine, vom Computer aus startet er direkt auf meinem Gerät. – dequec64

Antwort

1

Es ist also nicht eine komplette große Super Antwort, aber ich habe in der Lage einfach diesen Fehler zu beheben, indem die ersten if-Anweisung in den checkForNewBooking Wechsel(). Jetzt ist es:

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

statt

if(extras != null) 

Ich weiß nicht ernst, warum das Programm mit diesem .. Die Klasse begann ich Teile geschrieben von der Hauptgrund ist, zu Beginn startet und so kommen Informationen nicht von dort. Laut den Kommentaren, die der Typ vor mir hinterlassen hat, soll diese Methode überprüfen, ob eine Buchung in der Vergangenheit abgeschlossen wurde, was bedeutet, dass die für BOOKING_DATE und BOOKING_TIME erforderlichen Informationen nach Abschluss einer Buchung von einer anderen Methode stammen.

Wie auch immer, es funktioniert jetzt! Vielen Dank für die Hilfe!

Verwandte Themen