Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态加载活动首先显示一个空白屏幕_Android_Android Layout_Android Intent_Android Activity_Android Launcher - Fatal编程技术网

Android 动态加载活动首先显示一个空白屏幕

Android 动态加载活动首先显示一个空白屏幕,android,android-layout,android-intent,android-activity,android-launcher,Android,Android Layout,Android Intent,Android Activity,Android Launcher,您好,我正在根据用户是否登录加载动态活动。通过Internet搜索,得到一个解决方案,要求创建空白活动,检查OnCube中的条件,基于该条件启动新的活动并完成空白活动。 但是,这会显示一个空白的白色屏幕1-2秒。我如何避免它 (当创建空白活动时,我已经删除了默认布局) 这是我的密码: public class BlankActivity extends Activity { public SharedPreferences mStoredValues; @Override

您好,我正在根据用户是否登录加载动态活动。通过Internet搜索,得到一个解决方案,要求创建空白活动,检查OnCube中的条件,基于该条件启动新的活动并完成空白活动。 但是,这会显示一个空白的白色屏幕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>

android:theme=“@android:style/theme.transparent.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>

您应该使用片段来涵盖这种情况。您可以选择动态添加到活动中的片段。试着这样做:

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();
}

它仍然存在一段时间。这使得白色隐形-不利于响应,也许更好地利用这个屏幕,并有一种启动屏幕?facebook是如何做到的?它们并不是每次都显示初始屏幕。如果我登录,他们会直接显示墙。在facebook上,你也会在几秒钟内看到白色屏幕。你真的无法避免延迟。但是,您可以放大包含进度条或启动屏幕的布局,这是比白色屏幕更好的用户体验。也许您不应该将其分为3个屏幕(空白、登录和主屏幕)但是使用一个会显示自己或显示另一个的,例如,如果登录,则从主屏幕开始,如果需要登录,则无需执行任何操作。您可以打开登录页面(甚至在主屏幕上方的弹出窗口中登录)。