我正在尝试使用一个自定义的actionprovider,下面是代码,但是我不知道如何控制mainactivity中的视图,如何控制mainactivity中的组件在下面的代码“onclick”函数中?
public class CustomActionProvider extends ActionProvider {
Context mContext;
public CustomActionProvider(Context context) {
super(context);
mContext = context;
}
@Override
public View onCreateActionView(MenuItem forItem) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View view = layoutInflater.inflate(R.layout.actionbar,null);
Button red = (Button)view.findViewById(R.id.button_red);
red.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
//What should I put here to control components of MainActivity
}
}
);
return view;
}
最佳答案
对于ActionProvider与活动进行通信,我看到两个解决方案:
1)使用LocalBroadcastManager。从actionprovider发送广播意图并在活动中实现广播接收器。数据必须是可分包/可序列化的。
2)在ActionProvider上创建一个公共方法来设置侦听器。从活动的oncreateoptionmenu()方法中的menuitem检索actionprovider实例,并调用setListener()方法来设置活动的侦听器。