我正在使用MVP构建一个Android应用程序,我对此模式有一个疑问.
假设我有一个用于创建新人的屏幕.此屏幕将显示一个EditText用于插入名称,另一个用于ImageView显示所选照片图片等.这将导致一个View界面,由Fragment.它将与一个Presenter接口合作,由另一个类实现.
精细.
现在我有另一个功能:用于编辑现有人的屏幕.碰巧,View此功能与创建新人的功能相同.但是,Presenter情况有所不同.它将从db中加载现有人员以使用当前数据预先填充视图开始,单击"save"时对数据库的操作将是更新而不是插入.
因此,我认为这是MVP的一个示例,其中一个View与演示者的不同实现一起工作以实现不同的用例.
你认为这是一个正确的假设,或者你觉得不同的特点应该有不同的View和Presenter接口?
另外,如果你有一个共同的View和不同的Presenters,将View是共同的实现,还是会导致两个类实现相同的接口?在实践中,我看到两个选项.
只有一个Fragment实施View.根据用户是要创建新人还是更新现有人,Fragment应该接收并使用不同的Presenter.
有两个Fragment.每个人都会实例化一个不同的Presenter.使用组合或继承来避免在两个片段之间复制代码.
在这些情况下,您认为更好的做法是什么?
谢谢.
我试图使用调用模式单击一个按钮.
InvokePattern ipAddMPButton = (InvokePattern)aeAddMPButton.GetCurrentPattern(InvokePattern.Pattern);
try
{
ipAddMPButton .Invoke();
}
catch (System.Runtime.InteropServices.COMException e)
{
// TODO
}
Run Code Online (Sandbox Code Playgroud)
它抛出COMException,我无法弄清楚为什么?
当我运行此代码时,按钮实际上被按下,功能正常.但随后它会停止一段时间,并抛出此异常.
我在Android UI开发方面相对较新.所以我需要更有经验的开发人员的帮助.
我正在创建我的应用程序Navigation Drawer,我遇到了很多问题.
首先,这是导航抽屉的示例代码.
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
这是官方网站的简单示例.
主内容视图(上面的FrameLayout)必须是DrawerLayout中的第一个子节点,因为XML顺序意味着z-ordering,抽屉必须位于内容之上.
在此示例中,有两个嵌套视图:FrameLayout如前所述,用于存储主内容和ListView表示NavigationDrawer菜单.
所以这是我的问题.
FrameLayout容器可以容纳Fragment ONLY ONE片段,如果我的Activity有两个,三个或更多,我必须做什么片段?在这种情况下,最佳解决方案是什么.BaseActivity(我已经在stackoverflow上阅读了答案),它将保存所有配置的东西NavigationDrawer.但就导航抽屉需要DrawerLayout在XML布局中的活动而言,BaseActivity应该调用setContentView方法.并且从BaseActivity活动继承的所有内容都应该做一些设置自己布局的技巧,否则覆盖这个方法没有意义,因为它会打破所有逻辑.在这种情况下该怎么办?对于第二个问题,我有一些想法如何解决这个问题,但不知道它是正确的方法,哪种方法更好.
第一个想法是实现TemplateMethod模式.在BaseActivity类似的东西中创建方法setupCustomViewGroup()并在所有活动中覆盖它从xml中膨胀所需的视图组并从此方法返回它,而不是在膨胀整个视图中使用它.
或者明确地向Activity添加视图,使用merge和include标记.
但同样,这只对整个活动或一个片段有用,如果我们有更多片段,使用嵌套片段怎么办,我认为这是个坏主意.
此外,我的目标是优化视图层次结构,使其快速高效,以便在旧设备上实现平滑.
对于能够描述或建议在这种情况下遵循最有效和正确的方法来使UI响应和代码可读的人,我将非常感激.
谢谢.
android ui-patterns android-layout android-fragments navigation-drawer
我正在尝试组合一个弹性盒布局 - 出于这个问题的目的,我将其称为“方形五块”布局(见图) - 但我遇到了麻烦,正如我尝试过的所有实验一样包裹不正确。
我见过使用浮动完成的相同布局,但我希望能够稍微适应未来并使用更新的方法 - 因此是 Flexbox。我尝试过搜索这种模式,但似乎没有一致的名称,因此找到类似的示例很困难。
我也使用视口单位来确保块保持完美的正方形,所有这些都基于视口宽度(vw)单位。
div { width: 25vw; height: 25vw; }
div:first-of-type { width: 50vw; height: 50vw; }
Run Code Online (Sandbox Code Playgroud)
主要特征是所有块都应该是正方形,但是第一个块的大小应该是其余四个块总和的大小。以前有人见过或做过这样的布局吗?
谢谢!!
目前我要求在多级网格中显示相关项目.这是伟大的祖父母 - >祖父母 - >父母 - >孩子
例如:Country-> state-> City-> Street是显示顺序.
建议的解决方案是在多级网格中显示所有这些(最多4个级别).
国家 - >州 - >城市 - >街
由于我对可用性方面的解决方案不满意,我正在寻找一种将显示分解为逻辑单元的UI设计模式.
谢谢
您将如何在ASP.Net MVC中实现用户消息堆栈?(您在应用程序内的任何位置为用户设置消息.它们在应用程序内的任何位置显示为应用程序的提示)
我想听听你的想法和想法.你会怎么做?
例如:

ui-patterns ×6
android ×2
asp.net ×1
asp.net-mvc ×1
css ×1
flexbox ×1
html ×1
layout ×1
messagebox ×1
mvp ×1
presenter ×1
usability ×1