我对Android开发很新,我正在尝试处理从片段类到我的活动的多次按钮点击。通过在我的fragment类中创建一个监听器,然后让activity类实现该接口,我能够弄清楚如何处理一次单击。
myFragment.java
onResetGridListener mCallback;
// Container activity must implement this interface
public interface onResetGridListener
{
public void ResetGridClicked();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.tilemap, container, false);
Button button = (Button) view.findViewById(R.id.resetGrid_button);
// A simple OnClickListener for our button. You can see here how a Fragment can encapsulate
// logic and views to build out re-usable Activity components.
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
mCallback.ResetGridClicked();
}
});
return view;
}
这很好用,但是我现在在同一个片段中有另一个按钮,还有更多的按钮,所以我想知道如何处理这个。活动可以实现多个接口(每个按钮一个接口)还是我错误的方式?
感谢您抽出时间和信息
答案 0 :(得分:6)
您可以让Fragment实现界面。然后它看起来像这样:
//init buttons somewhere
button.setOnClickListener(this);
anotherButton.setOnClickListener(this);
//that's a Fragment method
public void onClick(View v)
{
switch(v.getId()){
case R.id.button1:
doStuff();
break;
case R.id.button2:
doStuff();
break;
}
}
答案 1 :(得分:0)
有两种使用侦听器的方法:
通过封装类实现OnClickLitener在这种情况下,您将在Fragment Class中使用此代码
button1.setOnClickListener(this) ;
button2.setOnClickListener(this) ;
// you will have to define the clickHandler:onClick
public void onClick(View v)
{
switch(v.getId()){
case R.id.button1:
// your code here
break;
case R.id.button2:
// your code here
break;
}
}
button1.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
button2.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
通过这种方式,您不必实现onClickListener接口。