Xamarin Toast 消息错误 (C#)

编程入门 行业动态 更新时间:2024-10-26 07:31:30
本文介绍了Xamarin Toast 消息错误 (C#)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

我想显示一个吐司消息.如果我在 onCreate() 中执行此操作,它会正常工作.但我想这样做,但出现错误:

I want to display a toast Message. If I'd do this in onCreate() it'd work fine. But I want to do it like this and I get an error:

Java.Lang.NullPointerException:尝试调用虚方法'android.content.res.Resources android.content.Context.getResources()'在空对象引用上

Java.Lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

我该怎么办?

public  void textToast(string textToDisplay) {               
    Toast.MakeText(this,
    textToDisplay, ToastLength.Long).Show();
}
class SampleTabFragment : Fragment
{
    Button add;
    MainActivity main = new MainActivity();
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        var view = inflater.Inflate(Resource.Layout.Tab, container, false);     
        add = view.FindViewById<Button>(Resource.Id.add);      
        add.Click += Click;
        return view;
    }
    void Click(object sender, EventArgs eventArgs)
    {      
        main.textToast( "I like Toast!"); 
    }
}

推荐答案

Java.Lang.NullPointerException 被触发,因为您正在手动创建和使用 MainActivity 的实例.

The Java.Lang.NullPointerException is triggered because you are manually creating and using an instance of MainActivity.

不要使用 MainActivity 的自定义实例在 Click 中显示您的 Toast 消息,而是简化您的代码以使用现有活动引用的片段:

Instead of using a custom instance of MainActivity to display your toast message in Click, simplify your code to use the fragments existing activity reference:

public  void textToast(string textToDisplay) {               
    Toast.MakeText(this,
    textToDisplay, ToastLength.Long).Show();
}

class SampleTabFragment : Fragment
{
    Button add;

    // Remove manual creation code
    // MainActivity main = new MainActivity();

    // ...

    void Click(object sender, EventArgs eventArgs)
    {      
        (Activity as MainActivity).textToast( "I like Toast!"); 
    }
}

此代码假定拥有的 Activity 始终是 MainActivity 的实例.

This code assumes that the owning activity is always an instance of MainActivity.

见:

Fragment getActivity()如何使用DialogFragment中Activity的方法?

这篇关于Xamarin Toast 消息错误 (C#)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-30 04:59:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1390229.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   消息   Xamarin   Toast

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!