安卓接口(interface)

标签 android interface android-fragments fragment-tab-host

我总是遇到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。他还告诉我,使用其构造函数创建 ActivityFragment 不适用于 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/

相关文章:

android - 使用自定义监听器扩充类时出错

c# - 为树状结构设计界面

java - 访问泛型类型的静态字段

android - 工具栏标题和选项在 fragment 上消失

c# - 如何通过蓝牙从 Unity C# android 应用程序向 Arduino 发送字符串?

android - 在图书馆项目中使用 Room DB

Android Shape - 带有圆形和不同顶部颜色的正方形

java - 为什么 Java 中的 Number 类不是接口(interface)而不是抽象类?

android - react native (Android): Run inside fragment?

android - DialogFragment 中的 ViewPager - IllegalStateException : Fragment does not have a view