Xamarin.Android(以前称为Android的Mono)是在Android平台上运行的Mono的实现,允许您使用本机Android库以及使用.NET BCL(基类库)在C#中编写Android应用程序。
.Net Maui 应用程序从 apk 安装时崩溃,但与调试器配合良好
我正在尝试为我的 .Net Maui 应用程序生成 APK,以便通过从已签名的 APK 安装它来在本地设备上测试它。为了生成 APK,我遵循了本教程。我正在将生成的 APK 文件移动到
WebAuthenticator 不关闭 chrome 浏览器时在 Xamarin 窗体 Android 中发送意图
我创建了一个 Xamarin 表单 android 应用程序。我正在使用我的 Xamarin 应用分享一张照片。 我的要求是在我第一次使用我的应用程序分享内容时登录到该应用程序。 对于登录,我是...
我有一个用 xamarin 开发的应用程序并在一年不活动后打开项目我不得不更新许多库。 这样做之后,应用程序打开后立即关闭,无需
如何在 Xamarin 中以编程方式选择特定的 AppShell 选项卡
我一直在尝试使用以下几行导航到页面中按钮事件的特定选项卡/页面,但是,它对我不起作用。 private void Button_Clicked(object sender, EventArgs e...
我正在尝试使用 android.developers 上的本指南读取 USB 大容量存储闪存驱动器的内容。我无法确定哪个驱动器实际上是闪存驱动器。 我正在使用这个...
Xamarin 形成 EntryCell 失去对在 android 中输入字符的关注
TableView下的Entrycell输入字符时,entrycell失去焦点,只在Android平板上 TableView下的Entrycell输入字符时,entrycell失去焦点,只在Android平板上 <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="App1.MainPage"> <StackLayout> <TableView> <TableRoot> <TableSection x:Name="TS"> <EntryCell PropertyChanged="EntryCell_PropertyChanged" /> </TableSection> </TableRoot> </TableView> </StackLayout> </ContentPage> using Xamarin.Forms; namespace App1 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private void EntryCell_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == EntryCell.TextProperty.PropertyName) { Device.BeginInvokeOnMainThread(() => { TS.Add(new TextCell() { Text = "Test" }); }); } } } } 在重置表部分 entrycell 失去焦点
Xamarin / Maui:Worker.DoWork,如何启动一个长时间运行的、事件驱动的任务
在我的 .NET Maui Android 应用程序中,我正在尝试使用 AndroidX.Work.Worker 来启动一个长时间运行的进程,以侦听来自加速度计的事件。我遇到的问题是,一旦 Do...
xamarin FlowListView 插件在滚动和加载时冻结很多
我刚刚使用此处的代码创建了一个示例列表 https://www.c-sharpcorner.com/article/grid-view-in-xamarin-forms-using-flowlistview/。然后我只是添加了一个额外的图像。所有的图片都是...
我是 Xamarin 和 C# 的新手,我只在 Xamarin 中为 Android 编写代码 NuGet 包:Firebase Database.net 4.2.0 以下 2 个代码负责从 Firebase 实时数据库获取数据
我想实现允许 Android 用户将文件写入其设备 SD 卡并能够将该 SD 卡弹出到不同设备并从...访问文件的功能
我正在创建一个应用程序,您可以在其中学习西班牙语,以便学习我想要创建卡片的单词,一侧将显示西班牙语单词,另一侧将显示英语单词 我不会...
<Grid Margin="30,30,30,30" BackgroundColor="{StaticResource ColorBack002}" RowSpacing="40"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" /> <ColumnDefinition Width="7*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!--#region Method Name--> <Label x:Name="xTxtMethod" Grid.Row="0" Grid.Column="0" Style="{StaticResource LabelStyle}" Text="Name" /> <Ctrl:CtrlTextEdit x:Name="xEditMethodname" Grid.Row="0" Grid.Column="1" BoxHeight="70" Margin="0,0,15,0" HorizontalOptions="FillAndExpand" Style="{StaticResource TextEditStyle}" Text="{Binding MethodName}" /> <!--#endregion--> 我有这样的布局。我将 TextEdit 的 HorizontalOption 设置为 FillAndExpand。 在屏幕上,TextEdit 的提示被切断了大约 1 个像素。为什么会这样? Textedit 似乎被扩展以适应屏幕,但它似乎已经扩展到更远的地方。 <Ctrl:CtrlScrollView x:Name="xScroll" BackgroundColor="{StaticResource ColorBack002}"> <Grid Margin="30,30,30,30" BackgroundColor="{StaticResource ColorBack002}" HorizontalOptions="FillAndExpand" RowSpacing="40" VerticalOptions="FillAndExpand"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" /> <ColumnDefinition Width="7*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!--#region Method Name--> <Label x:Name="xTxtMethod" Grid.Row="0" Grid.Column="0" Style="{StaticResource LabelStyle}" Text="Name" /> <Ctrl:CtrlTextEdit x:Name="xEditMethodname" Grid.Row="0" Grid.Column="1" Margin="0,0,1,0" BoxHeight="70" HorizontalOptions="FillAndExpand" Style="{StaticResource TextEditStyle}" Text="{Binding MethodName}" /> <!--#endregion--> <!--#region Cell Type--> <Label Grid.Row="1" Grid.Column="0" Style="{StaticResource LabelStyle}" Text="Cell Type"> <Label.GestureRecognizers> <TapGestureRecognizer Command="{Binding CellTypeClick}" /> </Label.GestureRecognizers> </Label> <Ctrl:CtrlTextBox x:Name="xEditCellType" Grid.Row="1" Grid.Column="1" Margin="0,0,1,0" HeightRequest="70" HorizontalOptions="FillAndExpand" TextPadding="10,0,0,0"> <Ctrl:CtrlTextBox.GestureRecognizers> <TapGestureRecognizer Tapped="BtnCellTypeClick" /> </Ctrl:CtrlTextBox.GestureRecognizers> </Ctrl:CtrlTextBox> <!--#endregion--> 我给了 1 的保证金值,让它现在可见。
我使用 Xamarin 和包 Microsoft.Identity.Client 在 Android 上实现了 MSAL 身份验证,它在回调屏幕上有问题,身份验证成功并且令牌被授予...
Xamarin 动态更新 CollectionView 中的特定 DataTemplate 项目属性具有唯一值
<CollectionView ItemsSource="{Binding ProductDb}"> <CollectionView.ItemTemplate> <DataTemplate> <StackLayout> <Label Text="{Binding ItemStatus}" /> <Label Text="{Binding ItemId}" /> <Label Text="{Binding ItemDescription}" /> </StackLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> collectionView 首先从数据库中加载并等待代码中发生的特定事件。所有项目数据属性的ItemStatus最初都有相同的消息“仍在进行中”。 然后当事件发生时,它必须更新 ItemStatus 中的特定项目数据 CollectionView 新消息“已完成!” 事件只是一个带有计时器的常规 C# 方法。 2 分钟后,它必须更新一个 ItemStatus 属性并将其消息更改为“已完成”。 我尝试从 INotifyPropertyChanged 的 OnPropertyChanged 更新ItemStatus,但它会使用相同的值更新每个项目数据的所有 ItemStatus。 我知道这是正常行为,因为 ItemStatus 属性名称在每个项目数据中找到自己。 我还尝试使用 x:Name 作为 ItemStatus 标签,但它不起作用;我在 Microsoft 网站上看到 DataTemplate 为其中的所有元素创建了一个新范围, 我也在考虑创建动态元素,但不确定是否可行。 顺便说一下,我只想动态更新特定 ItemId/Item Data 的 ItemStatus, 我记得在 HTML/CSS/Javascript 中有一种 CLASS 和 ID 元素,您可以在页面的任何位置从 javascript 方法访问它们。 请问有人知道如何实现吗? private string itemStatus = "Still in progress"; public string ItemStatus { get => itemStatus; set { if (value == itemStatus) return; itemStatus = value; OnPropertyChanged(nameof(ItemStatus)); } } private void UpdateUIItemStatusMessage(string uniqueMessage) { ItemStatus = $"Completed !!!"; } Jason 请求的代码 namespace WarehouseMobile { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class ProductPage : ContentPage { private string itemStatusMessage = "Still in progress"; public string ItemStatus { get => itemStatusMessage; set { if (value == itemStatusMessage) return; itemStatusMessage = value; OnPropertyChanged(nameof(ItemStatus)); } } private ObservableCollection<ProductDb> _products; public ObservableCollection<ProductDb> Products { get { return _products; } set { _products = value; OnPropertyChanged(nameof(Products)); } } public ProductPage() { InitializeComponent(); BindingContext = this; Products = new ObservableCollection<ProductDb>(); } protected override async void OnAppearing() { base.OnAppearing(); Products = new ObservableCollection<ProductDb>(data); myCollection.ItemsSource = Products; } private void UpdateUIItemStatusMessage(string itemId) { var myItems = myCollection.ItemsSource as ObservableCollection<ProductDb>; var selectedItem = myItems.FirstOrDefault(o => o.Id == 4); selectedItem.ItemStatus = $"NEW MESSAGE !!! - Completed"; } } } public class ProductDb { [PrimaryKey, AutoIncrement] public int ItemId { get; set; } public string ItemDescription { get; set; } public string ItemStatus { get; set; } } 使用 LINQ using System.Linq; ... var item = MyItems.FirstOrDefault(x => x.ItemID == SelectedItemID); item.ItemStatus = "some new status"; 其次,如果您的 UI 绑定到类 P 的属性 C,那么如果您希望 UI 在 P 的值更改时更新,C 必须实现 INotifyPropertyChanged。在其他一些类上实现它对你没有帮助,它必须在相关属性所属的类上完成 实施INotifyPropertyChanged 首先,将其添加到类声明中 public class C : INotifyPropertyChanged 然后,添加一个PropertyChanged事件 public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } 最后,在要动态更新的任何属性的设置器中添加对 PropertyChanged 处理程序的调用 private string p; public string P { get { return p; } set { p = value; NotifyPropertyChanged(); } }
Xamarin 动态更新 CollectionView 中的特定 DataTemplate 项目属性具有唯一值
<CollectionView ItemsSource="{Binding MyItems}"> <CollectionView.ItemTemplate> <DataTemplate> <StackLayout> <Label Text="{Binding ItemStatus}" /> <Label Text="{Binding ItemId}" /> <Label Text="{Binding ItemDescription}" /> </StackLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> 我尝试从 INotifyPropertyChanged 的 OnPropertyChanged 更新 ItemStatus,但它使用相同的值更新每个项目数据的所有 ItemStatus。 我知道这是正常行为,因为 ItemStatus 属性名称在每个项目数据中找到自己。 我还尝试使用 x:Name 作为 ItemStatus 标签,但它不起作用;我在 Microsoft 网站上看到 DataTemplate 为其中的所有元素创建了一个新范围, 我也在考虑创建动态元素,但不确定是否可行。 顺便说一下,我只想动态更新特定 ItemId/Item Data 的 ItemStatus, 我记得在 HTML/CSS/Javascript 中有一种 CLASS 和 ID 元素,您可以在页面的任何位置从 javascript 方法访问它们。 请问有人知道如何实现吗? private string itemStatus = "Still in progress"; public string ItemStatus { get => itemStatus; set { if (value == itemStatus) return; itemStatus = value; OnPropertyChanged(nameof(ItemStatus)); } } private void UpdateUIItemStatusMessage(string uniqueMessage) { ItemStatus = $"Completed !!!"; } 使用 LINQ using System.Linq; ... var item = MyItems.FirstOrDefault(x => x.ItemID == SelectedItemID); item.ItemStatus = "some new status";
在Xamarin forms程序中,我做了这样一个从.txt文件中读取文本的方法 公共字符串 ReadTextFromFile() { var assembly = typeof(App).GetTypeInfo().Assembly; ...
如何在 xamarin 中获取后台运行的应用程序列表?由于 GetRunningTasks 已弃用/过时,替代方案是什么?
我之前提出了一个请求,想知道在 xamarin(Andriod 和 iOS)中获取在后台运行的应用程序列表的替代解决方案是什么,因为 GetRunningTasks 不支持......
结合使用 Settings.ACTION_WIFI_ADD_NETWORKS 和 startActivityForResult 时应用程序崩溃
我正在尝试在 xamarin Android 上使用以下代码保存网络配置。 private void AddWifi(字符串 ssid,字符串 psk) { var suggestions = new 列表 我正在尝试在 xamarin Android 上使用以下代码保存网络配置。 private void AddWifi(string ssid, string psk) { var suggestions = new List<IParcelable> { new WifiNetworkSuggestion.Builder() .SetSsid(ssid) .SetWpa2Passphrase(psk) .Build() }; var bundle = new Bundle(); bundle.PutParcelableArrayList(ExtraWifiNetworkList, suggestions); var intent = new Intent(ActionWifiAddNetworks); intent.PutExtras(bundle); MainActivity.Instance.StartActivityForResult(intent, RequestCodeConstants.WifiRequestCode); } 我在 Android 12 设备上进行调试,在保存新网络时面临频繁的应用程序崩溃(并非总是如此)。虽然我的应用程序崩溃了,但调试器已附加到 vs2022。我的应用程序的目标框架是 Android 12。 我在这里发现了一些类似的问题:https://github.com/facebook/react-native/issues/36094 和https://community.oneplus.com/thread/1353760 Visual Studio 输出 [DecorView[]] onWindowFocusChanged hasWindowFocus false [tWriterEnhance] Explicit concurrent copying GC freed 119792(5287KB) AllocSpace objects, 5(164KB) LOS objects, 24% free, 5230KB/6974KB, paused 91us,85us total 54.456ms [Activity] PerfMonitor: Slow Operation: Activity com.packagename/crc647e3ada291cd56112.MainActivity onDestroy took 627ms [Choreographer] Skipped 61 frames! The application may be doing too much work on its main thread. [Looper] PerfMonitor doFrame : time=0ms vsyncFrame=0 latency=683ms procState=-1 historyMsgCount=2 (msgIndex=2 wall=671ms seq=47927 late=20ms h=android.app.ActivityThread$H w=159) Android 工作室 Logcat getRecentTasks: taskId=925 userId=0 baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.packagename/crc647e3ada291cd56112.MainActivity } 2023-03-09 21:50:10.680 1784-12912 ActivityTaskManager system_server W Force finishing activity com.packagename/crc647e3ada291cd56112.MainActivity 2023-03-09 21:50:11.859 7578-7578 tWriterEnhance com...Inc.packagename I Explicit concurrent copying GC freed 119792(5287KB) AllocSpace objects, 5(164KB) LOS objects, 24% free, 5230KB/6974KB, paused 91us,85us total 54.456ms 2023-03-09 21:50:11.986 7578-7578 Activity com...Inc.packagename W PerfMonitor: Slow Operation: Activity com.packagename/crc647e3ada291cd56112.MainActivity onDestroy took 627ms 2023-03-09 21:50:11.997 1784-12916 InputManager-JNI system_server W Input channel object '22029a1 com.packagename/crc647e3ada291cd56112.MainActivity (client)' was disposed without first being removed with the input manager! 2023-03-09 21:50:12.008 7578-7578 Choreographer com...Inc.packagename I Skipped 61 frames! The application may be doing too much work on its main thread. 2023-03-09 21:50:12.009 7578-7578 Looper com...Inc.packagename W PerfMonitor doFrame : time=0ms vsyncFrame=0 latency=683ms procState=-1 historyMsgCount=2 (msgIndex=2 wall=671ms seq=47927 late=20ms h=android.app.ActivityThread$H w=159) 2023-03-09 21:50:16.005 3068-3393 ActivityManagerWrapper com.miui.home E getRecentTasks: taskId=925 userId=0 baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.packagename 我创建了一个新的 Xamarin.Android 项目来测试您的代码。 主要活动: public class MainActivity : AppCompatActivity { private void AddWifi(string ssid, string psk) { var suggestions = new List<IParcelable> { new WifiNetworkSuggestion.Builder() .SetSsid(ssid) .SetWpa2Passphrase(psk) .Build() }; var bundle = new Bundle(); bundle.PutParcelableArrayList(Android.Provider.Settings.ExtraWifiNetworkList, suggestions); var intent = new Intent(Android.Provider.Settings.ActionWifiAddNetworks); intent.PutExtras(bundle); // this.StartActivity(intent); this.StartActivityForResult(intent,0); } protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Create your application here SetContentView(Resource.Layout.activity_main); var button = FindViewById<Button>(Resource.Id.button1); button.Click += delegate { AddWifi("test123456", "test123456"); }; } } 我在Android 12模拟器和小米实体机上用Android 13分别测试了StartActivity和StartActivityForResult方法,都会添加网络成功 结果图:
在这里输入图片描述 点击选项页面,它会弹出。 在罢工页面中有几个控件。 我总是希望滚动到顶部。但奇怪的是,光标指向...