我总是遇到java.lang.IllegalStateException:Could not execute method of the activity
这个问题。我正计划执行一个 android 组件事件(例如按钮事件 - 指示单击此按钮的次数)。这是此问题的代码 fragment :
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));
}
}
我试图通过在 Logcat
上调用一条消息来确保 clicked()
工作 View 接口(interface)方法并且它有效但是当我使用 Button
上面的错误总是提示我。我检查了 data
是否为 null,它返回了 true
。我有点困惑,我试图从 Activity
方法中检查 data
的无效性是返回 false
但是当我访问任何方法时由接口(interface)覆盖它总是返回 true
。有办法解决吗?
最佳答案
这是我的 friend 告诉我的解决这个问题的方法。使用 getSupportFragmentManager
。他还告诉我,使用其构造函数创建 Activity
或 Fragment
不适用于 Android 平台。因此,我改用传统方式将选项卡添加到 FragmentTabHost
。
@Override
public void onBackPressed() {
//tabs.get(fTabHost.getCurrentTabTag()).clicked();
((Selection) getSupportFragmentManager().findByFragmentByTag(fTabHost.getCurrentTabTag()).clicked();
}
关于安卓接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875473/