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上的教程。请回答:)