今日、私は Xamarin.Forms 2.5. に更新して、次の警告が表示されることを確認しました。
警告CS0618 'Forms.Context'は廃止されました: 'Contextはバージョン2.5で廃止されました。代わりにローカルコンテキストを使用してください。
_Forms.Context
_の代わりにローカルコンテキストを取得するにはどうすればよいですか? Androidコンテキストは意味ですか?
警告CS0618 'ButtonRenderer.ButtonRenderer()' is obsolete: 'このコンストラクタはバージョン2.5で廃止されました。代わりにButtonRenderer(Context)を使用してください。
私のButtonRenderer
にはOnElementChanged()
メソッドしかないので、ここで何を変更すればよいですか?単にButtonRenderer(Context)
コンストラクタを追加しますか?プラットフォームレンダラークラスでこれを行った場合でも、警告が表示されます。誰かに例がありますか? 公式ドキュメント は言及しておらず、 ButtonRenderer
のオープンソースコード を除いて、Googleもいくつかの有用な結果をもたらしていません。この変更は、他の多くのレンダラークラスにも関係しています。
プラグインなどにブレーキをかける他の変更を経験した人はいますか?
PS:また、_Device.Windows
_が廃止されたときもわかりませんでした。これを_Device.UWP
_に置き換えました。
SearchBarRenderer
にも同じ問題があり、修正するために必要なのは、次のようなコンストラクターを追加することだけです。
public ShowSearchBarRenderer(Context context) : base(context)
{
}
それがあなたの質問の2番目の部分に答えることを願っています。
ここには2つの質問があります。
Xamarin.Forms.Forms.Context
が廃止されたため、現在のコンテキストにどのようにアクセスできますか?オーバーロードされたコンストラクターを各カスタムレンダラーに追加する
これはButtonRenderer
を使用した例です
[Assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace MyApp.Droid
{
public class CustomButtonRenderer : ButtonRenderer
{
public CustomButtonRenderer(Context context) : base(context)
{
}
protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
//ToDo: Customize Button
}
}
}
インストール @ Motz 's CurrentActivityPlugin 。
これで、現在のアクティビティにアクセスする必要があるときにCrossCurrentActivity.Current.Activity
を呼び出すことができます。
Xamarin.Formsでアプリの設定を開く方法の例を次に示します。
[Assembly: Dependency(typeof(DeepLinks_Android))]
namespace MyApp.Droid
{
public class DeepLinks_Android : IDeepLinks
{
Context CurrentContext => CrossCurrentActivity.Current.Activity;
public Task OpenSettings()
{
var myAppSettingsIntent = new Intent(Settings.ActionApplicationDetailsSettings, Android.Net.Uri.Parse("package:" + CurrentContext.PackageName));
myAppSettingsIntent.AddCategory(Intent.CategoryDefault);
return Task.Run(() =>
{
try
{
CurrentContext.StartActivity(myAppSettingsIntent);
}
catch (Exception)
{
Toast.MakeText(CurrentContext.ApplicationContext, "Unable to open Settings", ToastLength.Short);
}
});
}
}
}
使用する Android.App.Application.Context
フォーラム でこのトピックについての議論があります