Java 布局更改后设置onClickListener无效
我已经为同一个片段创建了两个不同的布局。一个用于Java 布局更改后设置onClickListener无效,java,android,android-fragments,onclick,Java,Android,Android Fragments,Onclick,我已经为同一个片段创建了两个不同的布局。一个用于纵向,第二个用于横向。所有按钮ID都是相同的。 我的片段实现了onClickListener。 当我启动应用程序时,onClick工作得很好。不管我是从风景画还是肖像画开始。当我改变方向时,布局会切换,但是onClick不再工作。它只在启动时起作用 public class Navigation extends Fragment implements View.OnClickListener { private ImageButton addBu
纵向
,第二个用于横向
。所有按钮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());
}
}
在创建视图时使用回调,而不是在创建活动时使用
@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();
}
这里是从getActivity()获取视图;
为什么要从getActivity()获取它们。从下面的路把他们带走
public class Navigation extends Fragment implements View.OnClickListener {
private ImageButton addButton;
private ImageButton viewButton;
private ImageButton albumButton;
private ImageButton infoButton;
private Communicator comm;
private View view;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.navigation_fragment_layout, container, `false);`
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
addButton = (ImageButton) view.findViewById(R.id.add_button);
addButton.setOnClickListener(this);
viewButton = (ImageButton) view.findViewById(R.id.view_button);
viewButton.setOnClickListener(this);
albumButton = (ImageButton) view.findViewById(R.id.album_button);
albumButton.setOnClickListener(this);
infoButton = (ImageButton) view.findViewById(R.id.info_button);
infoButton.setOnClickListener(this);
comm = (Communicator) this;
}
让我知道这是否有效我没想到会这样!太棒了!:)泰!我也试过了。蒂耶鲁的回答很有帮助。我在看youtube上的教程。请回答:)