我想显示一个Toast Message。如果我在onCreate()中执行此操作,它可以正常工作。但我想这样做,我收到一个错误:
Java.Lang.NullPointerException:尝试调用虚方法 'android.content.res.Resources android.content.Context.getResources()' 在空对象引用上
我该怎么办?
<div id="textboxes">
<textarea id="input1" placeholder="First Name" rows="1" cols="10">
</textarea>
<textarea id="input2" placeholder="Surname" rows="1" cols="10"></textarea>
</div>
答案 0 :(得分:6)
由于您手动创建并使用Java.Lang.NullPointerException
的实例,因此会触发MainActivity
。
不使用MainActivity
的自定义实例在Click
中显示您的Toast消息,而是简化代码以使用片段现有活动参考:
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!");
}
}
此代码假定拥有活动始终是MainActivity
的实例。
请参阅:
答案 1 :(得分:1)
如果我理解你的问题,我认为一个好的解决方案可能是这个:
public void makeToast(Context ctx, string str)
{
Toast.MakeText(ctx, str, ToastLength.Long).Show();
}
当你在每个片段中使用它时,你可以把它称之为:
makeToast(this.Activity, "test!");
为我工作,让我知道:)。