小编Mik*_*Dev的帖子

onCreateOptionsMenu在ActionBar中使用选项卡被调用了太多次

这是我的问题.我有一个应用程序,我正在使用带有选项卡的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)

android actionbarsherlock android-actionbar

14
推荐指数
2
解决办法
1万
查看次数

你如何在 Clean Architecture 中实现一对多的关系

我在使用 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 ..... }

我不认为我可以使用多态,因为在我看到的所有文档中,模型不知道用例。

我希望你能帮助,非常感谢你的时间:)

-麦克风

java android system-design

9
推荐指数
1
解决办法
1809
查看次数

如何避免Intent过滤器中的*/*mime类型

AndroidDev

我有一个接受图像的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为"*/*",过滤器仍然会被捕获

有什么我可以做的,以便我的应用程序不被称为"*/*"?当然,我的应用程序启动后我可以处理它,但这对我来说似乎很荒谬.我宁愿我的应用程序不在共享列表中.

android mime-types

8
推荐指数
1
解决办法
832
查看次数

如何使用Gradle构建在Android Studio中导入com.google.android.gms.*?

我按照此处所述的步骤进行操作:设置 我点击了"使用Gradle同步项目"按钮.Gradle和Android Studio 似乎找不到所有内容,但实际上我无法使用gms代码.如果我尝试导入,我将获得com.google.android.gms的自动填充功能,但不会再进一步​​.我已使用Android SDK Manager更新了所有软件包.

  • 我正在运行Android Studio 0.4.2.
  • 我的minSdk设置为9
  • 我的build.gradle包括编译'com.google.android.gms:play-services:4.0.30'

就程序而言,我应该准备好编码,但它不起作用.有任何想法吗?

[编辑,添加信息]

我可以在我的爆炸的捆绑包目录中找到ComGoogleAndroiddGmsPlayServices3265.aar文件.在该文件的内部,我还找到了公共目录,在里面我找到了GooglePlayServicesUtil.class(这是我的应用程序中找不到的)

我搞不清楚了.

[编辑2]

该问题并非针对Google Play服务或Android Studio.我尝试添加另一个库(HoloColorPicker)并得到相同的结果.但是,我能够将库的资源添加到我的项目中!我能够在我的XML布局中添加它们并在我的应用程序中查看它们.我能够与他们互动,他们工作得很好.当我试图在代码中引用它们时,问题又出现了.与gms的情况完全一样,我在尝试导入到实际类的时候已经完成了代码,我无法在代码中声明该类.

我能够通过克隆它并导入项目来使用该库.

此外,这不是Android Studio问题,因为在"./gradlew clean build"命令行上发生同样的事情

android gradle google-play-services android-studio

5
推荐指数
1
解决办法
2万
查看次数

为什么MediaController会影响隐藏导航栏?

我的应用程序包含一个显示图像和视频的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)

android android-viewpager

5
推荐指数
0
解决办法
1260
查看次数