我有一个HomeActivity
,底部有四个标签,每个标签都是一个片段。所以,我有四个片段,即Fragment1
,Fragment2
,Fragment3
和Fragment4
。以下是我创建这些标签的代码。
public void addTabs() {
addTab("Recent", R.drawable.ic_launcher, FragmentRecent.class);
addTab("Groups", R.drawable.ic_launcher, FragmentGroups.class);
addTab("Contacts", R.drawable.ic_launcher, FragmentContacts.class);
addTab("Settings", R.drawable.ic_launcher, FragmentSettings.class);
}
/**
* Adding tabs to the screen
* @param label Tab title
* @param drawableId Tab icon
* @param c Tab fragment class
*/
private void addTab(String label, int drawableId, Class<?> c) {
TabHost.TabSpec spec = mTabHost.newTabSpec("tab" + label);
final View tabIndicator = LayoutInflater.from(this).inflate(
R.layout.tab_indicator, mTabHost.getTabWidget(), false);
final TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); title.setText(label);
final ImageView icon = (ImageView) tabIndicator.findViewById(R.id.tab_icon);
icon.setImageResource(drawableId);
spec.setIndicator(tabIndicator);
mTabHost.addTab(spec, c, null);
}
我有一个BroadcastReceiver,它将数据插入本地数据库,最后发送回调给Fragment1
。我有一个接口ISendResult
,它在此BroadcastReceiver中定义,由Fragment1
实现。一旦数据库发生变化,我想在Fragment1
中做一些事情,比如说我想刷新它的视图。
以下是界面
的声明public interface ISendResult{
public void sendResult(boolean dbChanged);
}
以下是将回调发送到Fragment的代码行。
((ISendResult) Fragment1.mFragment1).sendResult(true);
我无法将回调发送给Fragment1
。我正在获得类强制转换异常。如果我使用相同的样式/方法将回调发送到某些活动,我的任务就会得到满足。但是我无法对Fragment做同样的事情。请帮助我。
还有其他方法可以实现吗?
修改
以下是ClassCastException的日志
java.lang.RuntimeException: Unable to start receiver com.example.demo.app.MsgReceiver: java.lang.ClassCastException: com.example.demo.activity.HomeActivity
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805)
at android.app.ActivityThread.access$2400(ActivityThread.java:117)
此处MsgReceiver
是BroadcastReceiver。