我试图用这样的代码调用一个片段
SettingsFragment fragment = new SettingsFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment, SETTINGS_FRAGMENT_TAG)
.commit();
但是,因为我改变了#34;扩展Fragment" to" PreferenceFragment"在我的SettingFragment中,我使用
public class SettingsFragment extends PreferenceFragment {}
这一行给我的错误是我的第二个参数"片段"需要" android.support.v4.app.Fragment"添加此lib后,它仍无法正常工作
.replace(R.id.fragment_container, fragment, SETTINGS_FRAGMENT_TAG)
看起来我的fragmentManager让我的片段感到困惑......有没有办法解决这个问题,甚至没有使用fragmentManager?感谢
答案 0 :(得分:0)
PreferenceFragment
扩展android.app.Fragment
。要使用支持FragmentManager
,您必须使用扩展android.support.v4.app.Fragment
的类,如@NoChinDeluxe建议的那样。
我建议使用v7 Preference Support Libarary:
compile 'com.android.support:preference-v7:24.0.0'
此库包含PreferenceFragmentCompat
类,其扩展为android.support.v4.app.Fragment
。因此,您可以扩展此类,而不是PreferenceFragment
来使用支持SettingsFragment
的{{1}}。
答案 1 :(得分:0)
由于您的//run the stored procedure
$result = mysqli_query($connection,
"CALL YourIfConditionSP") or die("Query fail: " . mysqli_error());
继承自SettingsFragment
,这意味着它基本上 是PreferenceFragment
。这意味着无论PreferenceFragment
继承了什么,您的PreferenceFragment
也将是这样。
因此,解决方案是确保您的SettingsFragment
继承正确的PreferenceFragment
类。换句话说,在Fragment
文件的顶部,您应该PreferenceFragment
而不能导入其他片段。这将使您的import android.support.v4.app.Fragment;
PreferenceFragment
成为android.support.v4.app.Fragment
,这样就可以使SettingsFragment
成为您发布的代码。