应用程序首次启动后,应用程序在启动时显示白屏

时间:2017-10-05 21:54:34

标签: android android-fragments

我不知道造成这种情况的原因是什么 - 我在几次使用Fragments并覆盖了后退按钮,但总体上没有明显为什么会发生这种情况。

我已经检查了logcat,并没有注明为什么会发生这种情况 - 有没有人知道可能是什么问题或者要检查什么?

没有对onDestroy进行手动调用。

一旦我意识到存在问题,我就试图找出生命周期的早期发生情况,并且应用程序在安装时加载正常,然后如果我登录应用程序然后终止应用程序,我无法加载它再次,我只是得到一个白色屏幕,如下所示。

Android Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.year3.practise">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">


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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity

public class MainActivity extends AppCompatActivity {

    private SharedPreferences pref;

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


        pref = getPreferences(0);
        //initialise method
        initFragment();

    }

private void initFragment(){

    Fragment fragment;
    if(pref.getBoolean(Constants.IS_LOGGED_IN,false)){
        fragment = new ProfileFragment();
    }
    else {
        fragment = new QuestionPinFragment();

        // update the main content by replacing fragments
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.fragment_frame, fragment)
                .commit();
    }

   }

}

enter image description here

1 个答案:

答案 0 :(得分:2)

您只是在else子句中替换Fragments 第二次打开应用程序时,首选项IS_LOGGED_IN为true,并且不显示片段。

尝试使用此代码:

private void initFragment(){    
    Fragment fragment;
    if (pref.getBoolean(Constants.IS_LOGGED_IN,false)) {
        fragment = new ProfileFragment();
    } else {
        fragment = new QuestionPinFragment();
    }

    // update the main content by replacing fragments
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
        .replace(R.id.fragment_frame, fragment)
        .commit();        
}