我覺得我必須失去一些瘋狂的東西。我正在將我編寫的代碼轉換爲使用ABS(並且確實有效),並將其切換爲使用本機ActionBar。我將min SDK設置爲14,並將其切換爲框架版本,現在我無法使ActionBar
存在。getActionBar()== null當它不應該
我Activity
:
public class HomeActivity extends Activity {
@Override
protected void onCreate(@CheckForNull Bundle icicle) {
super.onCreate(icicle);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
}
}
我AndroidManifest:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/>
...
<activity android:launchMode="singleTop" android:name=".ui.HomeActivity" android:theme="@android:style/Theme.Holo">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:name="target device" android:value="universal"/>
</activity>
我Robolectric測試:
@RunWith(RobolectricTestRunner.class)
public class HomeActivityTest {
@Test
public void testActionBarDisplay() {
// Given
final HomeActivity activity_under_testing = new HomeActivity();
// When
activity_under_testing.onCreate(null);
// Then
assertThat(activity_under_testing.getActionBar())
.hasDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
|ActionBar.DISPLAY_SHOW_TITLE
|ActionBar.DISPLAY_USE_LOGO);
}
}
我使用FEST-的Android爲assertThat
(不可能成爲問題)。
問題:
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 7.563 sec <<< FAILURE! testActionBarDisplay(com.imminentmeals.android.base.ui.HomeActivityTest) Time elapsed: 6.588 sec <<< FAILURE! java.lang.AssertionError: expecting actual not to be null at com.imminentmeals.android.base.ui.HomeActivityTest.testActionBarDisplay(HomeActivityTest.java:28)
我要補充一點,我使用Robolectric 2.0阿爾法2。我跳過了測試,並打包了我的apk,並且ActionBar
似乎正常工作,所以我覺得這一定是Robolectric問題?但我認爲它應該可以在原生Android上運行,因爲它運行的是原生Android代碼。
再次檢查我的問題,我不* *不再使用ABS,我切換到框架,我minSDK是14.另外,Window.FEATURE_ACTION_BAR不會傷害任何東西,而且是有,因爲它在之前對類似問題的回答中已有陳述,儘管我認識到這不是必要的。我一直在嘗試我能找到的大部分東西。 – 2013-03-23 05:13:05
啊,我的不好。我誤解了,並認爲你想切換到ABS。 – adneal 2013-03-23 05:23:22
明白了,我重新編寫了它,以免再次發生 – 2013-03-23 05:33:10