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

How to display a toast message on clicking a button in a fragment?

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

1.Activity 2.Fragment

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

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

您无法在片段中查找按钮,

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

在你的activity中:

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

在你的片段中:

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

@TonyMathew,欢迎来到 Android 世界。您对 ButtonClick 的实施是错误的。 This 是关于如何使用片段的详尽教程。还有一个处理点击事件的例子。长话短说,您需要通过 ID 在片段 xml 布局中找到您的按钮。 不要使用按钮的文字!

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

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

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

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

问题是在activity中找不到您的方法,因此引发异常(片段中的方法不算在这里)。要解决这个问题,您有 2 个选择:

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