Android启动ActionBarActivity首先显示空白页面

时间:2014-03-27 07:42:48

标签: android android-intent android-manifest android-support-library

我正在使用支持库4和7.我正在通过意图开始一项活动。这是ActionBarActivity,android.support.v7.app.actionbaractivity。

我遇到的问题是当我开始并展示新活动时。在我的活动显示之前,我得到一个像这样的安卓徽标的空白活动。很难得到这些照片,但我认为这清楚地说明了这个问题。

如何摆脱这种行为?

问题如下所示。

1)我的新活动开始加载。

enter image description here

2)我的新活动几乎已加载。

enter image description here

3)我的新活动已加载。 Android图标现已消失。

enter image description here

我以这种方式开展活动:

Intent intent = new Intent(this, SomeActivity.class);
startActivity(intent);

这就是我的配置在清单中的样子。

    <activity
        android:name="com.blah.bli.activities.SomeActivity"
        android:alwaysRetainTaskState="true"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:icon="@drawable/tidsam_logo"
        android:label="@string/empty_title"
        android:launchMode="singleInstance"
        android:theme="@style/Theme.AppCompat.Light" />

活动代码。首先,大多数都是从这个类继承的,因为我需要一个注销功能,为此我需要跟踪用户上次活动的时间。我觉得没什么奇怪的。

活动很大,做了很多事情

public class SuperActionBarActivity extends ActionBarActivity  {

    ApplicationExtension appState;

    @Override
    public void onUserInteraction(){
        appState.LastActive = Calendar.getInstance();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         appState = ((ApplicationExtension )getApplicationContext());
         appState.LastActive = Calendar.getInstance();

    }


}

这是一个有问题的简单活动。

public class HelpActivity extends SuperActionBarActivity {


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

        setActionBar();
    }

    // todo: create actionbar util class
    private void setActionBar() {
        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        getSupportActionBar().setCustomView(R.layout.abs_layout);
        TextView login = (TextView) findViewById(R.id.abs_layout_login);
        login.setVisibility(View.INVISIBLE);

        FontUtils.applyFontAwesomeToControl(this, findViewById(R.id.abs_layout_back));
    }

    public void onClick(View v) {

        if (v == null) return;

        switch (v.getId()) {
        case R.id.abs_layout_back:
            onBackPressed();
            break;
        }

    }
}

1 个答案:

答案 0 :(得分:2)

这是因为Android使用您在清单中设置的主题来创建“虚拟”活动,直到您的应用程序被加载。

在清单中设置自定义主题将以与应用程序其余部分相同的样式加载虚拟活动,并使其不太明显。

这是一个如何执行此操作的教程:http://cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous/