将Bundle从Activity传递给Fragment时出现NullPointer异常

时间:2013-08-23 08:40:06

标签: android android-fragments

我是android的新手,尝试使用

将一个包从一个Activity发送到Fragment
Bundle args = new Bundle();
args.putString("name", "XXXXXXX");

FragmentTab1 fTab1 = new FragmentTab1();
fTab1.setArguments(args);

并在FragmentTab1 onCreate方法中如下:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    // Get the view from fragmenttab1.xml
    View view = inflater.inflate(R.layout.fragmenttab1, container, false);
    Bundle bundle = this.getArguments();
    if (bundle != null) {
      name = bundle.getString("name");
    }
    TextView nameView = (TextView) view.findViewById(R.id.dinesh);
    nameView.setText(name);
    return view;
  }

null pointer exception

获取Bundle bundle = this.getArguments();

请帮我跟踪此异常

4 个答案:

答案 0 :(得分:1)

对不起,如果我的回答很晚......

请创建片段的第一个实例然后捆绑..并确保在片段上执行事务以获取片段中的参数。

FragmentTab1 fTab1 = new FragmentTab1();
Bundle args = new Bundle();
args.putString("name", "XXXXXXX");
fTab1.setArguments(args);

希望这会解决空指针异常,你可以在片段的onStart或OnCreateView方法上得到参数。

亲切的问候,

答案 1 :(得分:1)

试试这个

Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

并在Fragment Task

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String strtext = getArguments().getString("edttext");    
    return inflater.inflate(R.layout.fragment, container, false);
}

答案 2 :(得分:0)

在片段中创建一个静态方法,然后将Bundle参数传递给该方法,这是迄今为止我找到的最简单的方法。

下面的

将是片段中方法的格式

Bundle arg;
public static void setArguments(Bundle Args)
{


    arg=Args;

}

并且您想要以这种方式设置Arguments的地方

YourFragment.setArguments(Args);

希望您会发现此答案有用

答案 3 :(得分:0)

在使用android studio时,我发生了同样的事情。然而,这是android studio的一个错误,它有时不会向apk添加更新的代码。因此,如果运行build-> Clean然后运行应用程序会更好。