我正在使用xamarin开发一个应用程序(但只有Android),我不明白我在哪里使用toast.MakeText,但我在每个文件上都尝试过,但是我无法使用上下文询问我一个参数。
我的视图文件包含对viewModel的调用
var a = await viewModel.SaveItems(st, folio, note);
我的viewModel文件包含此
public async Task<bool> SaveItems(int st, int folio, string note)
{
var result = await DataStore.UpdateItemAsync(st, folio, note, Item);
PostResult = await DataStore.SendPicItemAsync(result);
return PostResult;
}
此时我的变量PostResult已正确分配,但我需要在某处检查我的PostResult以显示我的警告信息。
函数DataStore.SendPicItemAsync(result)
向我的服务器发送此值,并返回此状态(这没关系)。
答案 0 :(得分:0)
我无法使用请求我作为参数的上下文。
您可以从下图中看到:
Android中有三种Context
,我们只能使用Activity
或Application
作为上下文参数来显示Toast
。
每个Activity
都是context
,一旦Activity
被回收,就无法使用上下文。但Application.Context
的生命周期是整个应用程序,只要您的应用程序未被杀死,Application.Context
可以使用,Toast
使用Application.Context
就可以显示。
如果您要展示的祝酒词位于Activity
课程内,您可以使用此作为context
,这意味着当前{{1像这样的用法:
Activity
如果它在Toast.MakeText(this, "HI",ToastLength.Short).Show();
之外,您需要获取活动上下文(在构造函数中传递等)或使用Activity
作为上下文参数,如下所示:
Android.App.Application.Context
编辑:
PCL与我的解决方案之间的差异
我认为你想知道的是this。
我的问题是我没有活动,
实际上,当您的Xamarin项目部署在Toast.MakeText(Android.App.Application.Context, "HI",ToastLength.Short).Show();
设备中时,您的项目仍然至少有一个Android
,您的Activity
将显示在ContentPage
上方,您可以在您的项目like this中看到它。
我有ContentPage,但是找到了Internet但我看到了一个使用Forms.Context的例子
我们可以从源代码中看到:
Activity
当您使用public static Context Context { get; private set; }
...
public static void Init(Activity activity, Bundle bundle).
{
...
Context = activity;
...
}
时,它会返回您用作Forms.Context
的当前Activity
,以便显示您的Toast。
答案 1 :(得分:0)
我使用表单解决了我的问题...
all_results = json['tags'][0]['results']
for i in range(0, len(all_results))
if i == 0:
my_df = pd.DataFrame(all_results[i]['values'])
else:
my_df.append(pd.DataFrame(all_results[i]['values']))