2

首先,我要对 Stuart Lodge 这个很棒的框架表示非常感谢。与 Xamarin 的 Visual Studio 集成一起,这是我接触过的最高效的跨平台框架之一。

我想要实现的是在单击按钮时启动一个包含可选 ListView 的对话框。当用户关闭此对话框时,我需要访问所选项目。在遵循 MVVM 范例的同时,是否有推荐的方法来使用 Mvvmcross 对话框插件?

我正在使用以下活动来创建一个对话框。

[Activity(Theme = "@android:style/Theme.Holo.Dialog")]
    public class SearchResultDialogView : MvxActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.SearchResultView);
        }
    }

SearchResultDialogViewModel从另一个视图模型导航到此视图会显示为模态视图。所以看起来我正朝着正确的方向前进。但是,该对话框缺少“确定”和“取消”按钮,我还想摆脱默认标题。认为我需要一个 AlertDialog 但到目前为止,我还没有成功使用以下代码启动一个:

 [Activity(Theme = "@android:style/Theme.NoTitleBar")]
    public class SearchResultDialogView : MvxActivity
    {
        protected override Dialog OnCreateDialog(int id, Bundle args)
        {
             AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.SetTitle("some title");
            return builder.Create();
        }
    }

抱歉,如果这个问题含糊不清。我是 Android UI 开发的新手。

TIA。

4

2 回答 2

3

对话一词在这里有几种不同的用法。

考虑到这些...

如果您想显示一个常规弹出窗口来收集一些数据,那么您可以尝试使用基于片段的对话框来收集数据 - 这在带有NameDialogFragment.cs的Fragments HomeView.cs中进行了演示(后面有一些代码) - 用于一般背景在片段上,在http://mvvmcross.wordpress.com/中观看 N=26

如果您想使用单独的活动进行数据收集,那么@gschackles 写了这篇文章关于从子视图模型返回数据的一种方式 - http://www.gregshackles.com/2012/11/returning-results-from-view- models-in-mvvmcross/ - 我确信也可以使用其他方案。

如果您确实想了解 Mvx Dialog 插件,请参阅http://mvvmcross.wordpress.com/中的 N=23

于 2013-07-18T07:06:10.193 回答
0

你可以用builder来做。

http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

代码是:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.pick_color);
           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    });
    return builder.create();
}

您可以通过将which值返回给调用者来获取元素。

于 2013-07-18T04:52:14.183 回答