【问题标题】:set TextView from in Fragment from activity从活动的片段中设置 TextView
【发布时间】:2017-04-08 10:12:11
【问题描述】:

我尝试通过我的活动中声明的对话框修改我的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);
    }

【问题讨论】:

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


    【解决方案1】:

    您需要将数据从片段发送到容器活动。您可以简单地使用接口来执行此操作。您需要将数据传递给接口方法。在您的活动中实现该接口,覆盖它的方法,您将在活动中拥有您的数据。这是最模块化的方法,它也避免了内存泄漏。作为参考,你可以看看这个link

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

    用于将数据从活动发送到片段:

        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() 来获取包。

    【讨论】:

    • 我想从我的活动中向我的片段发送数据!
    • 需要通过用片段替换活动容器布局来导航到片段。
    • 当我打开片段时,textview没有改变,我必须打开对话框才能修改它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多