我在这里尝试了解决方案:
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的新手,请原谅我。
答案 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启用您的按钮,否则禁用它。快乐的编码!