布局更改后的java设置onClickListener不起作用
我已经为同一个片段创建了两个不同的布局。一个用于Portrait
,第二个用于Landscape
。所有按钮ID都是相同的。
我的片段实现了onClickListener
。
当我启动应用程序时,onClick工作得很好。不管我是从风景画还是肖像画开始。当我改变方向时,布局会切换,但是onClick
不再工作。它只在启动时起作用
public class Navigation extends Fragment implements View.OnClickListener {
private ImageButton addButton;
private ImageButton viewButton;
private ImageButton albumButton;
private ImageButton infoButton;
private Communicator comm;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.navigation_fragment_layout, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
addButton = (ImageButton) getActivity().findViewById(R.id.add_button);
addButton.setOnClickListener(this);
viewButton = (ImageButton) getActivity().findViewById(R.id.view_button);
viewButton.setOnClickListener(this);
albumButton = (ImageButton) getActivity().findViewById(R.id.album_button);
albumButton.setOnClickListener(this);
infoButton = (ImageButton) getActivity().findViewById(R.id.info_button);
infoButton.setOnClickListener(this);
comm = (Communicator) getActivity();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onClick(View v) {
comm.onFragmentTouch(v.getId());
}
}
# 1 楼答案
在创建视图时使用onViewCreated回调,而不是在创建活动时使用onActivityCreated
# 2 楼答案
这里是getActivity()的视图; 为什么要从getActivity()获取它们。从下面的路把他们带走
让我知道这是否有效