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

时间:2018-01-17 06:52:15

标签: android android-fragments

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

Calling a Fragment method from a parent Activity

但它对我不起作用。

我的片段中有这个方法

 public void showbutton()
    {
        sup.setEnabled(true);
    }

我正在父活动中使用它

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

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

4 个答案:

答案 0 :(得分:2)

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

public interface UserAction {
void showButton();
}

在Fragment中实现接口

@Override
public void showButton() {
        sup.setEnabled(true);
}

然后在您的活动中致电

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

答案 1 :(得分:1)

首先,请务必访问正确的FragmentManager,确认您需要拨打getFragmentManager()getSupportFragmentManager()

其次,您应该将cast片段添加到您的类型中。也就是说,

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

答案 2 :(得分:0)

我认为您应该使用Fragment Name进行类型转换。

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

答案 3 :(得分:0)

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