protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.men_questions);
            // put UInfoViewModel instance of UserInformationViewModel.cs
            UInfoViewModel = ServiceLocator.Current.GetInstance <UserInformationViewModel>();
            // in this pary get intent variable that was sent by MainActivity and set them for UInfoViewModel properties.
            var nav   = (NavigationService)ServiceLocator.Current.GetInstance <INavigationService>();
            var param = nav.GetAndRemoveParameter <List <string> >(Intent);

            UInfoViewModel.GenderType  = param[0];
            UInfoViewModel.PhoneNumber = param[1];
            // put MenViewModel instance of MenQuestionViewModel.cs
            MenViewModel = ServiceLocator.Current.GetInstance <MenQuestionViewModel>();
            // binding views
            mMenBinding = this.SetBinding(() => MenViewModel.JobSubject
                                          , () => Job.Text
                                          , BindingMode.TwoWay);
            // get spinner content that user seleced and assign it to MenViewModel.Gender property
            Military.ItemSelected += (sender, e) =>
            {
                var content = string.Format(Military.GetItemAtPosition(e.Position).ToString());
                MenViewModel.MilitaryStatusCommand = content;
            };
            // when Confirme button clicked call ConfirmeDataCommand  methode in MenViewModel.cs and send data to other activity and navigates to it.
            Confirme.SetCommand(
                "Click",
                MenViewModel.ConfirmeDataCommand);
            // set spinner items from resource
            var adapter = ArrayAdapter.CreateFromResource(
                this, Resource.Array.military_array, Android.Resource.Layout.SimpleExpandableListItem1);

            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            Military.Adapter = adapter;
        }
Example #2
0
        /// <summary>
        /// 进行Android备份
        /// </summary>
        /// <param name="path"></param>
        /// <param name="error"></param>
        public void BeginBackup(string path, Action <ErrorResult> error)
        {
            var dir = Path.GetDirectoryName(path);

            try
            {
                if (!string.IsNullOrEmpty(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                var stream = File.OpenWrite(path);
                // 连接到Socket,连接失败则退出
                if (!Begin(error))
                {
                    return;
                }
                // 2.请求备份
                const string cmd = "backup:-all";
                socket.Send(Encoding.ASCII.GetBytes($"{cmd.Length:X4}{cmd}"));
                // 错误时读取附加信息
                var result = SocketHelper.GetResult(socket, true);
                if (!result.Okay)
                {
                    Error(BackupResult.EnterAdbBackupFail, result.Data);
                    return;
                }
                // 请求确认备份
                if (!Confirme?.Invoke() ?? true)
                {
                    OnExit(false);
                    return;
                }
                // 开启线程循环接受数据
                ThreadPool.QueueUserWorkItem(back =>
                {
                    var buffer = new byte[1024 * 64];
                    var len    = SocketHelper.Read(socket, buffer, buffer.Length);
                    while (len > 0)
                    {
                        stream.Write(buffer, 0, len);
                        len = SocketHelper.Read(socket, buffer, buffer.Length);
                    }
                    // 用户点击了不备份时,没有数据写入,所以Position为0
                    var flag = stream.Position == 0;
                    stream.Close();
                    if (flag)
                    {
                        Error(BackupResult.UserCancel, "用户点击了取消备份!");
                        return;
                    }
                    OnExit(true);
                });
            }
            catch (Exception e)
            {
                if (e is DirectoryNotFoundException || e is IOException)
                {
                    Error(CommonError.InvalidDirectory, "创建文件或目录时出错!");
                }
            }
        }