public class Home extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.home,null);
}}
这是片段标签1的整个代码.. 我有一个带有两个TabFragments的程序,我想在片段选项卡1和2中声明一个图像按钮和按钮意图,但我不能这样做,并且findviewbyid不起作用..
我可以做什么来宣布按钮意图?
答案 0 :(得分:0)
要处理按钮点击(并查看一般的点击次数),请使用View.OnClickListener
界面。您所要做的就是覆盖其onClick
方法,并通过调用setOnClickListener()
将其分配给视图。
您还可以找到详尽的教程here。
UPD:您的方法应如下所示:
public View onCreateView(.....) {
// assign inflated view to a variable
View v = inflater.inflate(R.layout_services, null);
// set your listener
v.findViewById(R.id.imageButton).setOnClickListener(.....);
// return the view in the end
return v;
}
问题是你立即返回膨胀的视图,下面的代码根本不会运行,这就是为什么会出现这个错误。
UPD2 现在问题是startActivity
方法正在接收Context
作为第一个参数,因此您应该通过调用getActivity()
将活动传递给那里(而不是传递Services.this
)。您可以阅读更多here。
UPD3:您似乎不明白代码的作用。您的findViewById
电话无效,因为它未被分配给变量,而您的setOnClickListener
正在应用于整个片段视图。这部分应该是这样的:
ImageButton button = (ImageButton) v.findViewById(R.id.imageButton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Activity activity = getActivity();
Intent intent = new Intent(activity, Admin.class);
activity.startActivity(intent);
}
});
我建议在尝试实际编写应用程序之前,先了解所有这些方法是如何工作的(至少要查看引用,首先是:here和here)。祝你好运。