这是我的问题.我有一个应用程序,我正在使用带有选项卡的ActionBar Sherlock,带有选项菜单的片段.每次我旋转模拟器时,都会为所有碎片添加菜单,甚至是那些被隐藏/删除的碎片(我都试过了).
这是设置:One FragmentActivity,具有ActionBar
final ActionBar bar = getSupportActionBar();
bar.addTab(bar.newTab()
.setText("1")
.setTabListener(new MyTabListener(new FragmentList1())));
bar.addTab(bar.newTab()
.setText("2")
.setTabListener(new MyTabListener(new FragmentList2())));
bar.addTab(bar.newTab()
.setText("3")
.setTabListener(new MyTabListener(new FragmentList3())));
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayShowTitleEnabled(true);
Run Code Online (Sandbox Code Playgroud)
选项卡都使用相同的Listener:
private class MyTabListener implements ActionBar.TabListener {
private final FragmentListBase m_fragment;
public MyTabListener(FragmentListBase fragment) {
m_fragment = fragment;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
FragmentManager fragmentMgr = ActivityList.this.getSupportFragmentManager();
FragmentTransaction transaction = fragmentMgr.beginTransaction();
transaction.add(R.id.frmlyt_list, m_fragment, m_fragment.LIST_TAG);
transaction.commit();
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
FragmentManager fragmentMgr = ActivityList.this.getSupportFragmentManager();
FragmentTransaction transaction = …Run Code Online (Sandbox Code Playgroud) 我在使用 Clean Architecture 时遇到问题。对于那些阅读过 Fernando Cejas 的博客文章 http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ 的人,我的问题是基于它和他的代码。
他的示例项目只有一个域对象一个用户。POJO 的一切都一目了然。我遇到问题的地方是,假设用户有书。一对多的关系。您将如何在 Clean Architecture 中处理这个问题?
就像他一样,我有几个层,所以每个域对象(用户、用户模型、用户实体)有 3 个类,每个域对象(UserDataRepository)有一个存储库。我们的新示例还将包含 Book、BookModel、BookEntity 和 BookDataRepository。
我还有带有 CRUD 变体的用例类。
我的问题出在 UI/Presenter 级别。此时在程序中,我有一个 UserModel 对象和一个 BookModel 列表。我没有 userModel.getBooks()。我没有 userModel.save() (它也可以保存所有书籍更改)。
为了突出这个问题,为了让这个类比看起来更像我的实际用例,我还有书中所有页面的列表!:) 因此,当我保存用户时,我想保存到书籍中,以及可能已修改的每本书的所有页面。
我该怎么办?
第二个奖励问题:在我的现实问题中,我有从基类派生的类。使用上面的类比:LeftPage 和 RightPage 将派生自 PageBase。一本书有一个列表。但是 LeftPage 和 RightPage 都有各自的存储库、单独的用例等(但这不起作用)如何保存列表?我是否必须制作一个单独的用例 SavePages ,它会有一个:
if (pages.elementAt(i) instanceof LeftPage) { SaveLeftPage saveLeft = new ..... } else { SaveRightPage saveRight = new ..... }
我不认为我可以使用多态,因为在我看到的所有文档中,模型不知道用例。
我希望你能帮助,非常感谢你的时间:)
-麦克风
我有一个接受图像的Intent过滤器:
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/*"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
但是,如果我选择图像和电影,那么即使mimetype为"*/*",过滤器仍然会被捕获
有什么我可以做的,以便我的应用程序不被称为"*/*"?当然,我的应用程序启动后我可以处理它,但这对我来说似乎很荒谬.我宁愿我的应用程序不在共享列表中.
我按照此处所述的步骤进行操作:设置 我点击了"使用Gradle同步项目"按钮.Gradle和Android Studio 似乎找不到所有内容,但实际上我无法使用gms代码.如果我尝试导入,我将获得com.google.android.gms的自动填充功能,但不会再进一步.我已使用Android SDK Manager更新了所有软件包.
就程序而言,我应该准备好编码,但它不起作用.有任何想法吗?
[编辑,添加信息]
我可以在我的爆炸的捆绑包目录中找到ComGoogleAndroiddGmsPlayServices3265.aar文件.在该文件的内部,我还找到了公共目录,在里面我找到了GooglePlayServicesUtil.class(这是我的应用程序中找不到的)
我搞不清楚了.
[编辑2]
该问题并非针对Google Play服务或Android Studio.我尝试添加另一个库(HoloColorPicker)并得到相同的结果.但是,我能够将库的资源添加到我的项目中!我能够在我的XML布局中添加它们并在我的应用程序中查看它们.我能够与他们互动,他们工作得很好.当我试图在代码中引用它们时,问题又出现了.与gms的情况完全一样,我在尝试导入到实际类的时候已经完成了代码,我无法在代码中声明该类.
我能够通过克隆它并导入项目来使用该库.
此外,这不是Android Studio问题,因为在"./gradlew clean build"命令行上发生同样的事情
我的应用程序包含一个显示图像和视频的ViewPager.应用程序应该在水龙头上进入沉浸式视图,并在3秒后从水龙头中取出沉浸式视图.我还希望状态栏始终隐藏.这主要是有效的,但......
我正在使用Android Studio中生成的SystemUIHider类的变体.我创建了一个名为SystemUIHiderKitKat的新类,它使用这些标志.单击屏幕将显示导航和操作栏(而不是状态栏).在3秒内单击将隐藏导航和状态栏.等待超过3秒将自动隐藏导航和操作栏.
酒吧的视频按预期运行,但没有MediaController:工作
切换MediaController时,条形视频无法正常工作:不工作
mShowFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
mHideFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE;
mTestForHiddenFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
Run Code Online (Sandbox Code Playgroud)
我的VideoView和MediaController都是自定义FrameLayout类的成员
public class MyVideoView extends FrameLayout
{
setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener()
{
@Override
public void onSystemUiVisibilityChange(int visibility)
{
final int hidden = SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN;
if ((hidden & visibility) != 0) {
m_mediaController.hide(); // A
}
else {
m_mediaController.show(); // B
}
}
}); …Run Code Online (Sandbox Code Playgroud)