4

我一直有这个问题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为 null 并返回true。我有点困惑,我试图检查方法的无效性dataActivity返回false,但是当我通过接口访问任何方法覆盖时,它总是返回true。有没有办法解决这个问题?

4

1 回答 1

1

这是我朋友告诉我解决这个问题的一种方法。使用getSupportFragmentManager. 他还告诉我,创建ActivityFragment使用其构造函数不适用于 Android 平台。所以我改用传统的方式在FragmentTabHost.

@Override
public void onBackPressed() {
    //tabs.get(fTabHost.getCurrentTabTag()).clicked();
    ((Selection) getSupportFragmentManager().findByFragmentByTag(fTabHost.getCurrentTabTag()).clicked();
}
于 2013-07-29T04:58:20.250 回答