我可以在Xamarin应用程序中使用toast.MakeText吗?

时间:2017-07-11 18:44:45

标签: android xamarin

我正在使用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)向我的服务器发送此值,并返回此状态(这没关系)。

2 个答案:

答案 0 :(得分:0)

  

我无法使用请求我作为参数的上下文。

您可以从下图中看到:

enter image description here

Android中有三种Context,我们只能使用ActivityApplication作为上下文参数来显示Toast

每个Activity都是context,一旦Activity被回收,就无法使用上下文。但Application.Context的生命周期是整个应用程序,只要您的应用程序未被杀死,Application.Context可以使用,Toast使用Application.Context就可以显示。

  1. 如果您要展示的祝酒词位于Activity课程内,您可以使用作为context,这意味着当前{{1像这样的用法:

    Activity
  2. 如果它在Toast.MakeText(this, "HI",ToastLength.Short).Show(); 之外,您需要获取活动上下文(在构造函数中传递等)或使用Activity作为上下文参数,如下所示:

    Android.App.Application.Context
  3. 编辑:

      

    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']))