如何在单击片段中的按钮时显示Toast消息?

时间:2016-07-28 08:28:14

标签: android android-fragments android-toast

首先,请原谅我,如果这是一个愚蠢的问题,因为我在这个领域相对较新。  所以基本上,我有一个包含片段的activity。这个片段有三个按钮。当点击任何这些按钮时,我想显示特定的Toast messages。我使用了onClick()方法,它在一个活动中运行良好。但是当我在片段中使用相同内容时,应用程序崩溃了。请帮助我。活动的名称是" User.java"它的XML文件是" activity_user.xml"。片段的名称" user_home.java"并且它的xml文件是" user_home_layout.xml"。
我附加了两个图像,第一个包含活动及其XML文件,而第二个包含片段及其sml文件。

1. Activity 2。Fragment

6 个答案:

答案 0 :(得分:4)

你在片段中找到了找到按钮,

@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;
   }
 }    

答案 1 :(得分:3)

您需要为按钮设置自定义OnClickListener:

yourButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "your toast text", Toast.LENGTH_LONG).show();
            }
        });

答案 2 :(得分:1)

在您的活动中:

Toast.makeText(YourActivity.this, "your message", Toast.LENGTH_SHORT).show();

在你的片段中:

Toast.makeText(this.getActivity(), "your message", Toast.LENGTH_SHORT).show();

答案 3 :(得分:1)

@TonyMathew,欢迎来到Android世界。你的ButtonClick实现是错误的。 This是一个关于如何使用Fragments的广泛教程。还有一个处理点击事件的例子。简而言之,您需要通过id在片段xml布局中找到您的按钮。 不要使用按钮'

在此处发布问题之前,请在网上搜索信息。很有可能你会找到你想要的东西!

P.S。 通常在Java中,您应该按以下方式命名您的类: ClassName.java 而不是 class_name.java

答案 4 :(得分:1)

getActivity()放在makeText()的上下文中,如下所示:

Toast.makeText(getActivity(), "Your message", Toast.LENGTH_SHORT).show();

答案 5 :(得分:1)

问题是你的方法在活动中找不到,因此引发了一个异常(片段中的方法在这里不计算)。要解决此问题,您有两个选择:

  1. 在活动中移动ButtonClick方法并进行一些小的更改(您必须以不同的方式获取Context)并保持xml文件相同;
  2. 为按钮设置onClickListener并处理侦听器内的onClick事件。