При загрузке динамически сначала отображается пустой экран

HI Я загружаю динамическую активность, основанную на том, вошел ли пользователь в систему или нет. Я выполняю поиск в Интернете и получил решение, которое запрашивает создание пустого действия, проверяет условие в oncreate, запускает новое действие на основе условия и завершает пустое действие. Тем не менее, это показывает мне пустой белый экран в течение 1-2 секунд. Как мне этого избежать?

(Я удалил макет по умолчанию при создании пустого действия.)

Вот мой код:

public class BlankActivity extends Activity {
    public  SharedPreferences mStoredValues;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent loadIntent;
        mStoredValues = getSharedPreferences(Constants.STORED_VALUES, 0);
        if (mStoredValues.contains(Constants.ACCESS_TOKEN)) {
            loadIntent = new Intent(BlankActivity.this, HomeScreen.class);
        }   
        else {
            loadIntent = new Intent(BlankActivity.this, Login.class);
        }
        startActivity(loadIntent);

        finish();
    }
}

Вот подробности деятельности в файле манифеста.

        <activity
            android:name="com.citrus.citruspay.BlankActivity"
            android:launchMode="singleInstance"
            android:noHistory="true" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

2 ответа

Вы должны использовать фрагменты, чтобы покрыть эту ситуацию. Вы можете выбрать, какой фрагмент вы добавите в свою деятельность динамически. Попробуйте что-то вроде этого:

public class FirstActivity extends FragmentActivity {
super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
    mStoredValues = getSharedPreferences(Constants.STORED_VALUES, 0);
    Fragment fragment;
    if (mStoredValues.contains(Constants.ACCESS_TOKEN)) {
        fragment = new HomeScreenFragment();
    }   
    else {
        fragment = new LoginFragment();
    }
    getFragmentManager().beginTransaction().add(R.id.container_id,fragment).commit();
}

Добавлять android:theme="@android:style/Theme.Translucent.NoTitleBar" на ваш первый тег активности в манифесте и посмотреть.

 <activity  android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:name="com.citrus.citruspay.BlankActivity"
            android:launchMode="singleInstance"
            android:noHistory="true" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Другие вопросы по тегам