如何在单击片段中的按钮时显示吐司消息?
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 文件。
您需要为您的按钮设置自定义 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 个选择:
- 移动 activity 中的
ButtonClick
方法并做一些小改动(您必须以不同的方式获得 Context
)并保留 xml文件相同;
- 为按钮设置
onClickListener
并在侦听器中处理 onClick
事件。
首先,如果这是一个愚蠢的问题,请原谅我,因为我在这个领域相对较新。
所以基本上,我有一个 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 文件。
您需要为您的按钮设置自定义 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 个选择:
- 移动 activity 中的
ButtonClick
方法并做一些小改动(您必须以不同的方式获得Context
)并保留 xml文件相同; - 为按钮设置
onClickListener
并在侦听器中处理onClick
事件。