作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用自定义 ActionProvider,下面是代码,但我不知道如何控制 MainActivity 中的 View ,如何在下面的代码“OnClick”函数中控制 MainActivity 中的组件?
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 与 Activity 的通信,我看到了 2 种解决方案:
1) 使用 LocalBroadcastManager。从 ActionProvider 发送广播 Intent,并在 Activity 中实现 BroadcastReceiver。数据必须是可打包/可序列化的。
2) 在您的 ActionProvider 上创建一个公共(public)方法来设置监听器。在 Activity 的 onCreateOptionMenu() 方法中从 MenuItem 中检索 ActionProvider 实例,并调用 setListener() 方法来设置 Activity 的监听器。
关于android - 如何在 ActionProvider 和主要 Activity 中进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20040637/
我是一名优秀的程序员,十分优秀!