Android 试图从父活动调用片段方法,但未解析该方法

Android 试图从父活动调用片段方法,但未解析该方法,android,android-fragments,Android,Android Fragments,我在这里尝试了解决方案: 但这对我不起作用 我的片段中有这个方法 public void showbutton() { sup.setEnabled(true); } 我在家长活动中使用了这个 Fragment fragment = (Fragment) getFragmentManager().findFragmentById(R.id.fragment); fragment.showbutton(); 我确信这是一个愚蠢的错误,我还是Android新手

我在这里尝试了解决方案:

但这对我不起作用

我的片段中有这个方法

 public void showbutton()
    {
        sup.setEnabled(true);
    }
我在家长活动中使用了这个

Fragment fragment = (Fragment) getFragmentManager().findFragmentById(R.id.fragment);
fragment.showbutton();

我确信这是一个愚蠢的错误,我还是Android新手,所以请原谅。

我认为您应该使用片段名称进行类型转换

i、 e


首先,确保访问的是正确的
FragmentManager
,确认需要调用
getFragmentManager()
getSupportFragmentManager()

其次,您应该
cast
将片段转换为您的类型。就是

MyFragment fragment = (MyFragment) getFragmentManager().findFragmentById(R.id.fragment);
fragment.showbutton();

这个问题与片段生命周期有关。您正试图调用由android操作系统关闭的fragment方法。您需要在片段中创建bool并将其正常设置为false,但当您需要显示按钮时,只需创建该片段并加载该片段,然后将bool更新为true。稍后检查该bool是否为true启用按钮,否则禁用它。快乐编码

使用回调从片段到活动进行通信

public interface UserAction {
void showButton();
}
在片段中实现接口

@Override
public void showButton() {
        sup.setEnabled(true);
}
然后在你的活动中打电话

UserAction mUserAction = getFragmentManager().findFragmentById(R.id.fragment);
mUserAction.showButton();

Fragment
类没有您的
showbutton()
方法。您的
Fragment
的特定子类有。我有没有办法从父活动中的Fragment子类调用showbutton方法@Mike M.声明并分配
fragment
作为您的特定子类,而不仅仅是
fragment
。您甚至可以向该接口添加更多函数,用于活动和片段之间的通信
UserAction mUserAction = getFragmentManager().findFragmentById(R.id.fragment);
mUserAction.showButton();