我总是遇到java.lang.IllegalStateException:Could not execute method of the activity
这个问题。我打算执行一个android组件事件(例如Button事件 - 指示单击此按钮的次数)。以下是此问题的代码段:
interface Selection {
public void clicked();
}
public class ParentClass extends FragmentActivity {
// fTabs : FragmentTabHost
// tabs : Map<String, Selection>
private void initialize() {
// fistFrag : FirstChildClass = new FirstChildClass()
// secondFrag : SecondChildClass = new SecondChildClass()
tabs.put("first", firstFrag);
tabs.put("second", secondFrag);
fTabs.add(fTab.newTabSpec("first").setTitle("First"), firstFrag.getClass(), null)
fTabs.add(fTab.newTabSpec("second").setTitle("Second"), secondFrag.getClass(), null)
}
@Override
public void onBackPressed() {
tabs.get(fTabHost.getCurrentTabTag()).clicked();
}
}
public class FirstChildClass extends Fragment implements Selection {
// data : TextView
// hit : int = 0
@Override
public void clicked() {
data.setText(String.format("Hit Count: %d", ++hit));
}
}
public class SecondChildClass extends Fragment implements Selection {
// data : TextView
// hit : int = 0
@Override
public void clicked() {
data.setText(String.format("Hit Count: %d", ++hit));
}
}
我尝试通过在clicked()
上调用消息来确保Logcat
工作视图接口方法,但是当我使用Button
时,上面的错误总是提示我。我已检查data
是否为空并返回true
。我有点困惑,我试图从data
方法检查Activity
的无效性返回false
但是当我通过接口访问任何方法覆盖时它总是返回{{ 1}}。有办法解决这个问题吗?
答案 0 :(得分:1)
这是我朋友告诉我解决这个问题的方法。使用getSupportFragmentManager
。他还告诉我,使用其构造函数创建Activity
或Fragment
不适用于Android平台。所以我转而采用向FragmentTabHost
添加标签的传统方式。
@Override
public void onBackPressed() {
//tabs.get(fTabHost.getCurrentTabTag()).clicked();
((Selection) getSupportFragmentManager().findByFragmentByTag(fTabHost.getCurrentTabTag()).clicked();
}