我正在使用Robolectric来测试我的应用程序中的活动.该活动扩展了ActionBarActivity.当我测试活动时,我得到错误:"IllegalStateException:你需要在这个活动中使用Theme.AppCompat主题(或后代)."
我的测试环境是:Android Studio 0.8.6,Robolectric 2.4-SNAPSHOT,support-v4库版本20.0,appcompat-v7版本20.0.
现在为班级.活动 :
public class FilterActivity extends ActionBarActivity
Run Code Online (Sandbox Code Playgroud)
测试类:
@Config(emulateSdk = 18, manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class FilterActivityTest
{
private FilterActivity activity;
@Before
public void setUp() throws Exception
{
activity = Robolectric.buildActivity(FilterActivity.class).create().get();
}
@After
public void tearDown() throws Exception
{
activity.finish();
}
@Test
public void testOnCreate()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我从values文件夹中的styles.xml:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
</style>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:110)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:99)
at …Run Code Online (Sandbox Code Playgroud) android android-appcompat robolectric android-actionbaractivity
您好,感谢您抽出时间阅读此问题.
我正在尝试开发一个将使用ActionBar compat库的Android应用程序.在使用compat库时,我遵循了(据我所知)所有建议.我的清单看起来像这样(只显示相关代码):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light" >
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
如你所见,我的目标是sdk 8+.我已经按照建议使用了Theme.AppCompat主题.
我的菜单文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cds="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_map"
android:icon="@drawable/ic_action_map"
android:title="@string/action_map"
cds:showAsAction="ifRoom"/>
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
cds:showAsAction="ifRoom"/>
<item
android:id="@+id/action_mail"
android:icon="@drawable/ic_action_mail"
android:title="@string/action_mail"
cds:showAsAction="ifRoom"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我使用自己的命名空间作为showAsAction属性.
我的活动扩展了ActionBarActivity类.
问题是:在设备和模拟器上的sdk 10(android 2.3.3)上,溢出菜单(操作栏右侧的三个点)未显示.操作栏上仅显示前两个菜单项.如果我按下设备上的"菜单"按钮,则第三项显示在屏幕的左下角(而不是从右上角显示,因为在具有更新的Android版本的设备上).相同的代码在模拟器上的android sdk 17上运行良好(溢出菜单显示正确的操作).
我在网上搜索了一个解决方案,但我找不到具有这个特定问题的解决方案.如果我没有在Android 2.3.3设备上安装具有相同操作栏并且显示溢出菜单图标并且在任何最近的Android设备上正常工作的应用程序,我会放弃该问题.这个应用程序的一个例子是todoist应用程序(https://en.todoist.com/android)或移动应用程序(https://play.google.com/store/apps/details?id=com.handcent.nextsms&hl = en)这两个都在这个设备上表现良好.
我有什么遗漏或是否有使用actionbar compat的推荐方法的替代解决方案?
感谢您的时间.
我正在使用react-native-image-picker 2.3.1,react-native 0.63.3和react 16.3.1。当使用图像选择器启动相机时,在某些设备(三星设备、Android 10、平板电脑和手机)上,用户拍照后,react-native 应用程序将重新初始化自身,而不会出现任何错误或适当的警告。行为并不一致:有时,用户只能拍摄 1 张照片,应用程序会重新启动,有时会发生在拍摄第 33 张照片时。该行为无法在模拟器或一加或摩托罗拉等不同设备中重现。系统 logcat 日志仅显示一些相关细节,我可以缩小范围:
15533-15533/?E/com.sfsdriver:runtime_flags 中设置的未知位:0x8000
E/InputDispatcher: 通道 'd0f2b6f com.sfsdriver/com.sfsdriver.MainActivity (server)' ~ 通道已不可恢复地损坏并将被处置!(可能在应用程序不再活动后发生)
E/memtrack:无法加载 memtrack 模块
还有这样的行: 7165-13038/com.sfsdriver I/ReactNativeJNI: Memory warning (Pressure level: TRIM_MEMORY_COMPLETE) returned by JS VM, running a GC 当应用程序在采取操作后成功返回到应用程序活动时都会发生这种情况图片以及应用程序何时重新启动。
我还尝试了以下react-native库:expo-image-picker、react-native-image-picker:v3.0.0-vnext.3