c# - Xamarin Toast 消息错误 (C#)

标签 c# android xamarin toast android-toast

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

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 的实例。

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

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 的实例。

参见:

关于c# - Xamarin Toast 消息错误 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264801/

相关文章:

c# - asp.net mvc int 属性绑定(bind)异常

PHP:如何从 android .apk 文件中获取版本?

android - 直接连接2个或更多安卓客户端

java - 如何将 C# 字符串转换为 Java.Lang.String?

c# - 使用 C# 查询 SQlite 数据库时出现 ConstraintException

c# - 如何检测对象的变化?

android - timer.setText (“setTextHere”)在线程内不起作用

ios - 在 iOS 7.1 模拟器上运行会导致控制台输出错误

visual-studio - Windows 上的 Xamarin + SQLite.Net?

c# - 如何在 C# 中找到对象的所属程序集