Я чувствую, что, должно быть, мне не хватает чего-то сумасшедшего. Я конвертирую свой код, написанный для работы с АБС (и он действительно работал), и переключая его на использование родного ActionBar. Я установил минимальный 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 Alpha 2. Я пропустил тест и упаковал свой apk, и ActionBar
, похоже, отлично работает, так что я чувствую, что это должна быть проблема с Robolectric? Но я думал, что он отлично работает с родным Android, поскольку он запускает собственный Android-код.
Проверьте еще раз на мой вопрос, я * не * больше, используя ABS, я перешел к каркасу, мой minSDK не 14. Кроме того, Window.FEATURE_ACTION_BAR ничего не болит, и там, потому что говорится в предыдущих ответах на подобные вопросы, хотя я понимаю, что это не обязательно. Я пробовал большинство вещей, которые я могу найти. –
А, мой плохой. Я неправильно понял и думал, что вы хотите переключиться на АБС. – adneal
Получил это, я его перефразировал, так что это не должно повториться –