我有一个与活动通信的片段。这个片段有几个按钮,其中一个是“播放”。当我按下按钮时,我已经设置了onClickListener,并且我也将侦听器的界面传递给活动,以便在按下按钮后处理操作。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_header, container, false);
play = (Button)view.findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onButtonPressed(v);
}
});
public interface OnButtonPressedListener {
public void onButtonPressed(View v);
}
问题是,一旦在活动上,当我实现监听器的接口时,它会收到按下按钮时我通过的View“v”。然后我尝试将我收到的视图与发起调用的特定按钮进行比较,以确保我按下了哪个按钮,因为几个按钮共享同一个界面。出于某种原因,这种比较不能正常工作,但是监听器接口本身可以正常工作。你能告诉我这些家伙我做错了什么吗? 这是我的活动的监听器界面:
@Override
public void onButtonPressed(View v) {
HeaderFragment h= new HeaderFragment();
if (v==h.play){
Toast.makeText(this,"View SI",Toast.LENGTH_LONG).show();
if (mediaPlayer!=null){
答案 0 :(得分:0)
我建议您为listener
public ButtinsListener {
void onPlayClicked()
void onStop()
//etc
}
然后
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onPlayClicked();
}
});
==是参考比较,即两个对象都指向相同的内存位置。在你的情况下,View v和HeaderFragment的h.play是不同的对象,它们是不一样的。此外,h.play可能为null,因为此片段未附加到Activity并且未实例化其任何视图。无论如何使用我上面显示的方法。