我创建了一个 preference_headers.xml 如下。我的 Activity 能够毫无问题地生成它。我想知道如何将参数(即 IP 地址字符串)从 Activity 传递到 fragment 类。我正在考虑使用 findfragmentbyid() 来访问特定 fragment ,但是,我不知道如何在 preference_headers.xml 中的 header 标记处添加 ID。
这是我的示例代码。谢谢
===== SetupActivity.java =======
public class SetupActivity extends SherlockPreferenceActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
}
===== preference_headers.xml =======
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:title="Network" />
<header
android:id="@+id/setting_wifi"
android:fragment="com.example.setup.WIFIFragment"
android:title="@string/setting_wifi" >
</header>
</preference-headers>
===== WIFIFragment.java =======
public static class WIFIFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_wifi);
}
}
最佳答案
在你的 SherlockPreferenceActivity
中覆盖这个方法
@Override
public void onHeaderClick(Header header, int position) {
// Here's an example
if(header.fragmentArguments == null)
{
header.fragmentArguments = new Bundle();
}
header.fragmentArguments.putString("IP", "Hi there! My IP is 127.0.0.1");
super.onHeaderClick(header, position);
}
你可以在你的 fragment 中获取参数
public static class WIFIFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_wifi);
Bundle b = getArguments();
if(b != null)
Toast.makeText(getActivity() , b.getString("IP") , 1).show();
}
}
我已经在 Jelly bean 中尝试过,而不是在 Actionbar Sherlock 库中,但您可以尝试一下。希望对你有帮助
关于android - 将参数传递给 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14699290/