java - 将 int 值从 Activity Fragment 传递到另一个 Fragment

标签 java android android-fragments

我需要将一个 int 值从一个 Activity fragment 传递到另一个 fragment 。然后,该数据将被设置为 switch case,这将决定将哪个 Android 布局文件附加到该 fragment 。

这是来自基本 Activity 和设置要​​传递的值的 fragment 上的代码:

Fragment fragment = new otherFragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

顺便说一句,我还尝试将上述代码放在 fragment 的 onCreate 和 onCreateView 方法上,但输出仍然相同。然后在设置 fragment 和 bundle 后,我切换到其他 Activity ,这里是获取和使用 int 值的代码:

Bundle bundle = this.getArguments();
int myInt = bundle.getInt(key, defaultValue);

也尝试过

savedInstanceState = this.getArguments();
int type = savedInstanceState.getInt(key, defaultValue);

当来自基本 Activity 时,错误是空指针异常,当来自第一个 fragment 时,错误是找不到资源。

05-12 14:50:47.732: E/ERRORSKI(814): java.lang.NullPointerException
05-12 14:41:38.542: E/ERRORSKI(798): android.content.res.Resources$NotFoundException: String resource ID #0x1

谢谢。

最佳答案

使用默认构造函数创建 fragment 通常不是正确的方法。 下面是一个示例,说明您可以更好地创建 fragment 的新实例并为其传递一个整数。

将此代码放入将要创建的 fragment 中。

public class ExampleFragment {
    public static ExampleFragment newInstance(int exampleInt) {
        ExampleFragment fragment = new ExampleFragment();

        Bundle args = new Bundle();
        args.putInt("exampleInt", exampleInt);
        fragment.setArguments(args);

        return fragment;
    }
}

在您的 Activity 中使用它来创建新 fragment 。

Fragment exampleFragment = ExampleFragment.newInstance(exampleInt);

稍后在您的 fragment 中,使用类似的方法来获取整数。

getArguments().getInt("exampleInt", -1);

关于java - 将 int 值从 Activity Fragment 传递到另一个 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603132/

相关文章:

java - 如何在Android开发中通过接受用户的文件名将文件保存在SD卡中

android - 如何将位图从一个 Activity 传递到另一个 Activity

android - Xamarin 安卓 : center not working for textview

java - 更新 Viewpager 中的 ListView

java - 使用谷歌地图 v2 膨胀 fragment 时出现异常

java - 无法使用 StringTokenizer 获取所有 token 元素

java - 列表与按键扫描

android - 将 2 个 fragment (一个 fragment 和一个 ListFragment)作为一个滚动

java - ResultSetMetaData 获取列的默认值

Android:如何在关闭时控制电子墨水屏