今天开发中遇到了一个问题,就是我想着当软件不是出于当前页面,但是当其他页面收到别人来的消息时,这个页面的某处可以做出相应的反应,于是就想着设置一个类似onclicklistener的监听事件。于是自己就仿照着点击事件写了一下,但是发现还是有问题,那就是以前都是自定义控件然后在控件当中自定义监听,但是现在是在不同的activity之间的监控,也就是说任意位置的监听。在网上查了很久也没有找到一个合适的例子,于是自己就又回到了原点仿照点击事件写了一个全局的接口,把相应的事件都写到全局工具里去了,结果实现了。下面就是代码(其实想明白了会发现特别简单):
首先是mainactivity:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppUtils.setOnClickShowToast(new OnClickShowToast() {
@Override
public void onShowToastClickListener(String text) {
Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
}
});
}
public void toNextPage(View view){
startActivity(new Intent(this,SecondPagerActivity.class));
}
}
然后是第二个页面代码:
public class SecondPagerActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_pager);
}
public void firstPagerShowToast(View view){
AppUtils.onClickShowToasts.onShowToastClickListener("你好");
}
}
这两个页面的xml布局就不用写了吧,每个里面就只有一个button;
下面是Apputils中的代码:
public class AppUtils {
public static OnClickShowToast onClickShowToasts;
public static void setOnClickShowToast(OnClickShowToast onClickShowToast){
onClickShowToasts=onClickShowToast;
}
}
下面是接口中的代码:
public interface OnClickShowToast{
public void onShowToastClickListener(String text);
}
其实这样就可以实现在任意地方做任意监听了。其实很简单的!
最后把demo我上传的资源里面了,希望对大家有帮助。