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

时间:2013-12-05 11:43:39

标签: android android-layout android-intent android-activity android-launcher

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 个答案:

答案 0 :(得分:1)

你应该使用Fragments来弥补这种情况。您可以选择动态添加到活动中的片段。尝试这样的事情:

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

答案 1 :(得分:0)

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>