android - 将参数传递给 fragment

标签 android android-layout

我创建了一个 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();
    }

}

我已经在 J​​elly bean 中尝试过,而不是在 Actionbar Sherlock 库中,但您可以尝试一下。希望对你有帮助

关于android - 将参数传递给 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14699290/

相关文章:

java - 用于 Java/Android 的 echoprint 代码生成器

android - 密度独立性

android - ArrayAdapter 的 getView() 方法没有被调用

java - 当我在布局之间滑动时如何打开音频文件?

android - 在所有设备 android 上具有适当布局的程序

android - CI TeamCity for android 无法为具有库和默认 build.xml 的项目构建 .apk 文件

android - native react 中的自下而上抽屉

java - 如何使用Button自动向Firebase进行身份验证 - Java

android - 谁能帮我正确设计这个

java - 为什么 DrawerLayout 在打开时有时会出现故障?