我正在尝试使用一个自定义的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()方法来设置活动的侦听器。

10-05 21:52