首先,请原谅我,如果这是一个愚蠢的问题,因为我在这个领域相对较新。
所以基本上,我有一个包含片段的activity
。这个片段有三个按钮。当点击任何这些按钮时,我想显示特定的Toast messages
。我使用了onClick()
方法,它在一个活动中运行良好。但是当我在片段中使用相同内容时,应用程序崩溃了。请帮助我。活动的名称是" User.java"它的XML文件是" activity_user.xml"。片段的名称" user_home.java"并且它的xml文件是" user_home_layout.xml"。
我附加了两个图像,第一个包含活动及其XML文件,而第二个包含片段及其sml文件。
答案 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)
问题是你的方法在活动中找不到,因此引发了一个异常(片段中的方法在这里不计算)。要解决此问题,您有两个选择:
ButtonClick
方法并进行一些小的更改(您必须以不同的方式获取Context
)并保持xml文件相同; onClickListener
并处理侦听器内的onClick
事件。