我正面临Android模拟器的问题,我已经在谷歌上搜索了一下但我找不到合适的答案。
我在一个活动中有一个简单的应用程序,使用滑动视图(使用android.support.v4.view.PagerTabStrip
刷新碎片)。这是好的,除了API 21或高屏幕上的一些奇怪的交换仿真。
我添加了一个偏好活动,通过我的主要活动中的菜单触发:
public boolean onOptionsItemSelected(MenuItem item) {
...
int id = item.getItemId();
if (id == R.id.action_settings) {
// start the preference activity
Intent aIntentPref = new Intent();
aIntentPref.setClass(MainActivity.this, PrefsActivity.class);
startActivityForResult(aIntentPref, FC_SETTINGS);
return true;
}
...
return super.onOptionsItemSelected(item);
}
我的PrefsActivity类非常简单,只需加载PreferenceFragment,到目前为止只包含一个ListPreference
:
public class PrefsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PrefsFragment()).commit();
}
}
在我的设备(hdpi API16)或大多数模拟器中,它运行良好。 我的问题是当我使用带有API21(棒棒糖)或xxhdpi大小的模拟器(使用xxhdpi API 19进行测试,或使用API21进行测试 - 甚至是lhdpi)时,单击菜单项时,没有任何反应(应用保留在MainActivity中)但我可以在logcat中看到以下内容:
1817-1817/{pack} W/EGL_emulation﹕ eglSurfaceAttrib not implemented
1817-1817/{pack} W/InputEventReceiver﹕ Attempted to finish an input event but the input event receiver has already been disposed.
1817-1817/{pack} W/InputEventReceiver﹕ Attempted to finish an input event but the input event receiver has already been disposed.
1817-1817/{pack} W/ViewRootImpl﹕ Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=115.0, y[0]=76.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=19114, downTime=19114, deviceId=0, source=0x1002 }
刚刚使用模拟器API 19测试 - mdpi并且它正常工作。
我怀疑仿真器在高分辨率或使用API 21时非常糟糕,是否有人对如何解决此问题或绕过此测试问题有进一步的建议?我没有任何带有API 21的设备。
感谢那些在这里读书的人; - )
使用AndroidStudio更新,它在我的一些Android模拟器测试中会有所改善,但测试时问题仍然存在。在许多设备和API中运行时,我对生产版本没有错误的反馈。所以我猜它没问题,只有模拟器问题。
答案 0 :(得分:1)
经过这么长时间没有回答,似乎这只是模拟器的一个问题,因为没有报道真正的问题。