2017-03-31 13 views
-1

,應用程序崩潰,恢復正常。當我嘗試將其最小化並重新打開最近的應用程序歷史記錄時,它再次正常工作。但是,當我最小化並嘗試用應用程序圖標重新打開它時,它會崩潰。通過點擊菜單中的應用圖標

MainActivity.java

public class MainActivity extends AppCompatActivity implements ResetPasswordDialog.Listener { 

public static final String TAG = MainActivity.class.getSimpleName(); 

private LoginFragment mLoginFragment; 
private ResetPasswordDialog mResetPasswordDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) { 

     loadFragment(); 
    } 
} 

private void loadFragment(){ 

    if (mLoginFragment == null) { 

     mLoginFragment = new LoginFragment(); 
    } 
    getFragmentManager().beginTransaction().replace(R.id.fragmentFrame,mLoginFragment,LoginFragment.TAG).commit(); 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    String data = intent.getData().getLastPathSegment(); 
    Log.d(TAG, "onNewIntent: "+data); 

    mResetPasswordDialog = (ResetPasswordDialog) getFragmentManager().findFragmentByTag(ResetPasswordDialog.TAG); 

    if (mResetPasswordDialog != null) 
     mResetPasswordDialog.setToken(data); 
} 

@Override 
public void onPasswordReset(String message) { 

    showSnackBarMessage(message); 
} 

private void showSnackBarMessage(String message) { 

    Snackbar.make(findViewById(R.id.activity_main),message, Snackbar.LENGTH_SHORT).show(); 

} 

}

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="true" /> 
<uses-feature 
    android:name="android.hardware.camera.front" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 

<!--singleTask => flag of launchMode --> 
<application 
    android:name="io.github.froger.xinger.InstaMaterialApplication" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name="io.github.froger.xinger.ui.activity.MainActivity" 
     android:launchMode="singleTop" 
     android:theme="@style/AppTheme.LoginRegister" 
     android:screenOrientation="portrait"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 

     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data 
       android:host="learn2crack" 
       android:scheme="http" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name="io.github.froger.xinger.ui.activity.DashboardActivity" 
     android:screenOrientation="portrait"> 
    </activity> 
    <activity 
     android:name="io.github.froger.xinger.ui.activity.CommentsActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.TransparentActivity" /> 
    <activity 
     android:name="io.github.froger.xinger.ui.activity.UserProfileActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.TransparentActivity" 
     android:launchMode="singleInstance" /> 
    <activity 
     android:name="io.github.froger.xinger.ui.activity.TakePhotoActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.TransparentActivity" /> 
    <activity 
     android:name="io.github.froger.xinger.ui.activity.PublishActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme" 
     android:windowSoftInputMode="stateHidden"> 

    </activity> 
</application> 

錯誤

04-01 00:51:26.015 25525-25525/io.github.froger.instamaterial D/AndroidRuntime: Shutting down VM 
04-01 00:51:26.016 25525-25525/io.github.froger.instamaterial E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: io.github.froger.instamaterial, PID: 25525 
                      java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getLastPathSegment()' on a null object reference 
                       at io.github.froger.xinger.ui.activity.MainActivity.onNewIntent(MainActivity.java:44) 
                       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1245) 
                       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1257) 
                       at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2804) 
                       at android.app.ActivityThread.performNewIntents(ActivityThread.java:2816) 
                       at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2825) 
                       at android.app.ActivityThread.-wrap15(ActivityThread.java) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1552) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:154) 
                       at android.app.ActivityThread.main(ActivityThread.java:6123) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
+1

的【什麼是一個NullPointerException,如何解決呢?(可能的複製http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-我修復它) –

+0

一個斷點,並通過代碼將幫助你很多。或者意圖爲空(不可能是因爲它傳遞給超類)或者它返回的數據爲空。 – efekctive

回答

0

堆棧跟蹤清楚地表明,在您的MainActivity的44行調用intent.getData()返回一個空。你應該檢查null,如果它是null,不要試圖詢問Intent。

0

您可以將字符串數據存儲在靜態變量中,然後檢查它是否爲空。如果它爲空,則使用靜態數據。我知道靜態變量是皺眉,你應該解決根本問題,但這將解決你的直接問題。

static String yourStaticString; 

... 
String data; 
if (intent.getData()==NULL) 
{ 
     data = yourStaticString; 
} 
else 
{ 
    if (intent.getData().getLastPathSegment()!=NULL) 
    { 
      data = intent.getData().getLastPathSegment(); 
      yourStaticString = data; 
    } else return; 
} 
相關問題