从Fragment from activity中设置TextView

时间:2017-04-08 10:12:11

标签: android date android-studio android-fragments textview

我尝试通过我的活动中声明的对话框修改Fragment中的日期,但我无法从我的活动中修改TextView

此部分在我的活动中声明

protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    if (id == 999) {
        return new DatePickerDialog(this,
                myDateListener, year, month, day);
    } 
private DatePickerDialog.OnDateSetListener myDateListener = new
        DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker arg0,
                                  int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub
                // arg1 = year
                // arg2 = month
                // arg3 = day
                showDate(arg1, arg2+1, arg3);
            }
        };

private void showDate(int year, int month, int day) {

     abbes = new StringBuilder().append(day).append("/")
            .append(month).append("/").append(year);
    android.support.v4.app.Fragment fragment = null;
    fragment = new Fragment7();
    Bundle bundle =new Bundle();
    bundle.putString("Radio", String.valueOf(abbes));
    fragment.setArguments(bundle);
    Toast.makeText(this, ""+abbes, Toast.LENGTH_LONG).show();


}

当我通过我的活动中的对话框更改日期时,我使用Toast进行了检查,因此我尝试将字符串发送到我的Fragment,只是它没有发送任何内容,我不明白为什么!

  

在我的Fragment

 if (getArguments() != null) {
        abbes1 = this.getArguments().getString("Radio");
        name.setText(abbes1);
    }

1 个答案:

答案 0 :(得分:0)

您需要将片段中的数据发送到容器活动。您只需使用界面即可。您需要将数据传递给接口方法。在您的活动中实施该界面,覆盖它的方法,您将在活动中获得您的数据。这是最模块化的方法,它也避免了内存泄漏。作为参考,您可以查看此link

否则,您可以直接从片段中调用容器Activity的方法并传递其中的数据值。像这样:((YourContainerActivity)getActivity()).yourMethodInActivity(yourParams);

对于sendind数据从活动到片段:

    Bundle bundle = new Bundle();
    bundle.putString("edttext", "From Activity");
    // set Fragmentclass Arguments
    Fragmentclass fragobj = new Fragmentclass();
    fragobj.setArguments(bundle);
 FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container_layout,fragobj,"FragmentClass");
fragmentTransaction.commit();

在你的片段中,你可以使用getArguments()来获取包。