[英]How to display a toast message on clicking a button in a fragment?
首先,如果这是一个愚蠢的问题,请原谅我,因为我在这个领域还比较新。 因此,基本上,我有一个包含片段的activity
。 该片段具有三个按钮。 当单击任何一个此按钮时,我想显示特定的Toast messages
。 我使用了onClick()
方法,该方法在活动中效果很好。 但是,当我在片段中使用相同的应用程序时,该应用程序将崩溃。 在这方面请帮帮我。活动的名称是“ User.java”,其XML文件是“ activity_user.xml”。 片段“ user_home.java”的名称及其xml文件为“ user_home_layout.xml”。
我附加了两个图像,第一个图像包含活动及其XML文件,第二个图像包含片段及其sml文件。
您在片段中找到了查找按钮,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.user_home_layout, container, false);
btn1=(Button)view.findViewById(R.id.GOT);
btn2=(Button)view.findViewById(R.id.SH);
btn3=(Button)view.findViewById(R.id.TD);
return view;
}
然后实现点击监听器,在Toast中只需使用getActivity()
Toast.makeText(getActivity(), "Game Of Thrones", Toast.LENGTH_SHORT).show();
实施方法
public void ButtonClick(View v) {
switch(v.getId()) {
case R.id.GOT:
Toast.makeText(getActivity(), "Game of Thornes", Toast.LENGTH_LONG).show();
break;
case R.id.SH:
Toast.makeText(getActivity(), "Sherlock", Toast.LENGTH_LONG).show();
break;
case R.id.TD:
Toast.makeText(getActivity(), "True Detective", Toast.LENGTH_LONG).show();
break;
}
}
您需要为按钮设置自定义OnClickListener:
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "your toast text", Toast.LENGTH_LONG).show();
}
});
在您的活动中:
Toast.makeText(YourActivity.this, "your message", Toast.LENGTH_SHORT).show();
在您的片段中:
Toast.makeText(this.getActivity(), "your message", Toast.LENGTH_SHORT).show();
@TonyMathew,欢迎来到Android世界。 您对ButtonClick的实现是错误的。 这是有关如何使用片段的详尽教程。 还有一个处理点击事件的示例。 长话短说,您需要按ID在片段xml布局中找到按钮。 不要使用按钮的文字!
请先在网上搜索信息,然后再在此处发布问题。 很有可能您会找到想要的东西!
PS通常,在Java中,您应该通过以下方式命名您的类: ClassName.java而不是class_name.java
只需将getActivity()放在makeText()的上下文中,如下所示:
Toast.makeText(getActivity(), "Your message", Toast.LENGTH_SHORT).show();
问题在于您的方法未在活动中找到,因此引发了异常(片段中的方法不在此处计算)。 要解决此问题,您有2个选择:
ButtonClick
方法并进行一些小的更改(您必须以不同的方式获取Context
)并保持xml文件相同; onClickListener
并处理侦听器内的onClick
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.