我有一个我正在进行现代化的应用程序。此过程的一个步骤是更改为基于片段的布局(使用支持库中的片段)。 我将我的活动转换为碎片,并使布局运行良好(使用ViewPager,很棒的东西!)
我正在让我的活动实现OnClickListener,以满足我所有的按键需求。我有新的Fragment化身当然做同样的事情,但看起来“onClick”永远不会被击中。片段有什么特别之处可以防止它们以这种方式工作吗?
答案 0 :(得分:40)
只做一个
public class fragmentOne extends Fragment implements OnClickListener {
Button myButton;
@Override
public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) {
View myView = inflater.inflate(R.layout.fragment_1, container, false);
myButton = (Button) myView.findViewById(R.id.myButton);
myButton.setOnClickListener(this);
return myView;
}
@Override
public void onClick(View v) {
// implements your things
}
}
非常简单
答案 1 :(得分:10)
我将专注于使用OnClick操作进行全局访问,您必须这样做是您的项目,必须实现 View.OnClickListener ,然后覆盖方法 OnClick(),在 OnCreateView()中必须执行此类 button_submit.setOnClickListener(this); ,以获取所需的视图, 请参阅以下代码以获得明确答案,谢谢。
public class New_Project extends Fragment implements View.OnClickListener{
private View mView;
private EditText edttxt_projectname;
private Button button_submit;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_newproject, container,false);
edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname);
button_submit=(Button)mView.findViewById(R.id.button_submit);
button_submit.setOnClickListener(this);
return mView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_submit:
edttxt_projectname.setText("Test Submit!#@%!#%");
break;
default:
break;
}
}
}
答案 2 :(得分:2)
我想评论一下Abhijit Chakra的答案,但似乎我需要有50个代表。对于那些想知道你是否能够使用Abhijit的答案的人来说,原因是:
public void OnClick(View v) {
// implements your things
}
您需要确保它是onClick,而不是OnClick。值得庆幸的是Android Studio内部错误消息来拯救。