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; }
/// <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, "创建文件或目录时出错!"); } } }