[英]googleMap.setMyLocationEnabled works only when launched from the phone
[英]App crashes when run from phone but works fine when launched from computer
經過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();
}
所以這不是一個完整的超級答案,但我已經能夠通過更改checkForNewBooking()中的第一個if語句來修復此錯誤。 現在它是:
if(extras.getString("BOOKING_DATE") != null)
代替
if(extras != null)
我真的不知道為什么程序開始這個..我發布的部分是主要部分,在開始時啟動,所以信息不是來自那里。 根據我之前留下的評論,此方法旨在檢查過去是否已完成預訂,這意味着預訂完成后,BOOKING_DATE和BOOKING_TIME所需的信息可能來自另一種方法。
無論如何,它現在有效! 謝謝大家的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.