我有一个与活动交流的片段。该片段有几个按钮,其中之一是“播放”。我为按下按钮时设置了一个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);
}
问题在于,一旦完成活动,当我实现侦听器的接口时,它将收到按下按钮时传递的视图“ 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){
我建议您为您的不同按钮创建不同的调用 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且未实例化其任何视图。无论如何,请使用我上面显示的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句