我有一些需要显示常规对话框的片段.在这些对话框中,用户可以选择是/否答案,然后片段应该相应地运行.
现在,Fragment该类没有onCreateDialog()覆盖的方法,所以我想我必须在包含的外部实现对话框Activity.没关系,但是Activity需要以某种方式向片段报告所选择的答案.我当然可以在这里使用回调模式,因此片段在Activity一个监听器类中注册自己,而Activity会通过它报告回答,或类似的东西.
但对于一个简单的任务来说,这似乎是一个相当大的混乱,因为在一个片段中显示一个"简单的"是 - 否对话框.而且,这样我的Fragment自足也会减少.
有没有更清洁的方法来做到这一点?
编辑:
这个问题的答案并没有真正详细解释如何使用DialogFragments来显示Fragments中的对话框.所以AFAIK,走的路是:
.setTargetFragment().我还没有找到一种简单的方法来获取活动中所有当前活动的(可见的,当前处于恢复状态)碎片.我的活动中是否可以不使用自定义簿记?似乎FragmentManager不支持此功能.
我非常喜欢我们在3.0中获得的新PopupMenu,但我无法在其中显示菜单项旁边的任何图标.我正在从下面的.xml中填充菜单:
<item android:id="@+id/menu_delete_product"
android:icon="@drawable/sym_action_add"
android:title="delete"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_modify_product"
android:icon="@drawable/sym_action_add"
android:title="modify"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_product_details"
android:icon="@drawable/sym_action_add"
android:title="details"
android:showAsAction="ifRoom|withText" />
Run Code Online (Sandbox Code Playgroud)
使用此代码:
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu pop = new PopupMenu(getActivity(), v);
pop.getMenuInflater().inflate(R.menu.shelves_details_menu, pop.getMenu());
pop.show();
}
});
Run Code Online (Sandbox Code Playgroud)
我不能让图标出现,我错过了什么?
3.0我们得到了花哨的LoaderManager,使用它处理数据加载AsyncTaskLoader中,CursorLoader和其他自定义Loader实例.但是通过这些文档来阅读这些我无法理解这一点:这些比仅仅使用旧AsyncTask的数据加载更好吗?
android android-asynctask android-loadermanager android-cursorloader
我已经读过,.setOnRetainInstance(true)提供UI的片段设置可能会导致内存泄漏.
有人可以解释为什么以及如何发生这种情况?我没有在任何地方找到详细的解释.
我们在3.0中获得了一个NumberPicker小部件,但似乎无法修改此小部件的textSize.我错过了什么或是这样吗?我真的想增加字体大小,它的默认值非常小.但是我看不到它的textSize属性.
当我使用express二进制文件创建示例Express应用程序时,引导程序代码包含以下行:
...
var app = express();
...
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
我没有找到关于app.router的更多信息.我认为这是处理路由(app.get(),app.post()等)规则的中间件,但是当我删除app.use(app.router)时,这些规则也会执行; 线.
那么这个中间件的确切用途是什么?
我目前的项目变得非常庞大.我有许多活动,适配器,片段,布局xmls和其他资源.
在我(较小的)之前的项目中,我组织了1个包/ 1类别样式的东西.所以我有com.stuff.xy.adapter,com.stuff.xy.activity,等等.现在这些包包含太多项目,我发现自己浪费了大量时间在包层次结构中搜索特定的类.
我使用Eclipse,并且有一些可以使用的快捷方式(例如转到类定义),但那些往往是情境化的(我不能用它来快速跳转到布局定义xml).
你能否分享一些有效组织大型项目的技巧?或者也许是一些插件?(例如,如果我可以将处理特定应用程序屏幕的源文件组合在一起 - 适配器,布局,活动和片段代码 - 这样我可以快速打开它们)
编辑:经过几个月的大型项目开发
首先,我尝试使用Eclipse工作集.它并没有真正为我减少,我的问题是我们的单个Android项目太大了,包含许多资源,类,接口等.在单个项目的上下文中处理工作集只花了太多时间,我认为它们主要用于在单个工作区中组织项目.
从长远来看,我们将我们庞大的单个项目分成了许多较小的android-library项目和一个依赖于所有这些较小的项目的"主要应用程序"项目.通过这种方式,我们可以在这些库项目之间分割资源(有许多布局,值,样式仅在应用程序的某些部分中使用)和代码.我还创建了一个基础库,所有其他库都依赖于它,并包含应用程序每个部分所需的资源和(基础)类.
有人可以解释一下使用Fragments的确切优势吗?在什么情况下我们应该使用碎片?
据我所知,这个框架:
帮助重用现有代码 - 如果我在Fragment中实现功能,那么当需要功能时,在我的应用程序的多个部分中显示此片段相对容易.
帮助处理多种屏幕尺寸 - 具有大屏幕的设备可以同时显示多个片段,对于较小的设备,我可以在单独的活动中显示片段.
这个框架还有更多吗?
编辑:
我已经在3.0平板电脑的大型项目中广泛使用Fragments.对我而言,最大的优势是使用片段我可以将单个整体活动中的逻辑分解为多个较小的片段.大屏幕意味着巨大的活动,难以阅读,理解(特别是对新团队成员),开发和维护.片段肯定有助于此事.
默认操作模式(3.0及更高版本)左侧带有绿色主题和"完成"按钮.我该如何定制这些?
谢谢
android android-3.0-honeycomb android-actionbar android-actionmode