在父 Activity 中实现内部 Fragment 类
Posted
技术标签:
【中文标题】在父 Activity 中实现内部 Fragment 类【英文标题】:Implements inner Fragment class in parent Activity 【发布时间】:2021-11-28 16:10:21 【问题描述】:我有以下代码:
public class SettingsActivity extends AppCompatActivity implements SettingsActivity.SettingsFragment.SendToActivity
...
public static class SettingsFragment extends PreferenceFragmentCompat
SendToActivity callback;
public void setSendToActivity (SendToActivity callback)
this.callback = callback;
public interface SendToActivity
public void send(int result);
...
@Override
public void onAttachFragment(Fragment fragment)
if (fragment instanceof SettingsFragment)
SettingsFragment settingsFragment = (SettingsFragment) fragment;
settingsFragment.setSendToActivity(this);
public void send(int result)
...
但我在 SettingsActivity 类的声明中收到以下错误:cyclic inheritance involving SettingsActivity
。我做错了什么?
【问题讨论】:
SendToActivity
定义在哪里?
@CommonsWare 哦正在编辑...
@CommonsWare 已编辑。
尝试将其移动到 SettingsActivity
内,而不是在您的 inner class
内。这会将implements
更改为SettingsActivity.SendToActivity
。
如果我只在implements
之后使用SettingsFragment.SendToActivity
,SettingsFragment
会变红并说:cannot find symbol
。
【参考方案1】:
尝试将SendToActivity
移出SettingsFragment
,如:
public class SettingsActivity extends AppCompatActivity implements SettingsActivity.SendToActivity
public interface SendToActivity
public void send(int result);
...
public static class SettingsFragment extends PreferenceFragmentCompat
SendToActivity callback;
public void setSendToActivity (SendToActivity callback)
this.callback = callback;
...
@Override
public void onAttachFragment(Fragment fragment)
if (fragment instanceof SettingsFragment)
SettingsFragment settingsFragment = (SettingsFragment) fragment;
settingsFragment.setSendToActivity(this);
public void send(int result)
...
【讨论】:
我遇到了同样的错误。 @Mike087:嗯...试试public static interface SendToActivity
。
试过了。我遇到了同样的错误。
@Mike087:好的,那么,它可能需要是***的interface
,而不是嵌套在看起来要实现该接口的类中。【参考方案2】:
我自己回答:片段类需要在自己的 java 文件中。那就正常实现吧(implements SettingsFragment.SendToActivity
)。
【讨论】:
以上是关于在父 Activity 中实现内部 Fragment 类的主要内容,如果未能解决你的问题,请参考以下文章
安卓开发之Activity传输数据到Fragmen+实例分析
Android 自定义Dialog类,并在Activity中实现按钮监听。
gitee查询用户名和密码 Android Studio 3.5以上版本新特性 sharePreferences 使用 不同的Activity间的preferences共享问题 Fragmen