将活动中的数据发送到其片段?

时间:2015-12-18 18:24:35

标签: android android-fragments

我正在尝试将数据从活动发送到片段 这是活动代码:

Bundle args=new Bundle();
    args.putString("username", username);
    ViewEmpAttend fragobj=new ViewEmpAttend();
    fragobj.setArguments(args);

这里是片段代码:

username=this.getArguments().getString("username");

但是这段代码在(Fragment Class)的onCreateView方法中给出了一个错误“null对象引用”。

请帮助:)

3 个答案:

答案 0 :(得分:0)

尝试从onCreate of Fragment

中检索参数
@Override
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    String username = this.getArguments().getString("username"); 

}

答案 1 :(得分:0)

在活动中定义一种方法。

public class MainActivity extends AppCompatActivity {
    String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   //your code
}
 //define this method
    public String getName(){
        this.name = username;
      }}

在片段中使用以下代码。

String userName = ((activityName) getActivity()).getName();//you will get name here.

答案 2 :(得分:0)

对于像这样简单的东西,我将在片段中创建一个构造函数方法来传入一个字符串。

例如

public class MyFragment extends Fragment{

   private String myString;

   public MyFragment (){
     // Recommended Empty Constructor
   }

   public MyFragment (String yourString){
       this.myString = yourString;

   }
}

在Activity类上,您可以将字符串直接传递给片段构造函数

public MyClass extends Activity{

   @override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       openFragment();
   }

   public void openFragment(){

       MyFragment fragment = new Fragment("yourString");
       // Here begin the fragment transaction
   }
}