当前位置: 首页 > 知识库问答 >
问题:

从DialogFragment到fragment的值不显示

慕容雅珺
2023-03-14

我的要求:

public class MainFragment extends Fragment implements OnClickListener,OnDisplayListener {

    static TextView displayDuration;
    TextView  setDuration;

    public MainFragment() {
        }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_one, container, false);
        displayDuration = (TextView) v.findViewById(R.id.displayDuration);
        setDuration = (TextView) v.findViewById(R.id.setDuration);
        setDuration.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
            DialogFragment durationPicker = new DurationFragment();
            durationPicker.show(getActivity().getFragmentManager(), "dialog");

            }

        });
        return v;
    }



    @Override
    public void ondurationSubmit(String duration) {
        // Do stuff
        displayDuration.setText(duration);
    }
}
public interface OnDisplayListener {
    public void ondurationSubmit(String duration);
}
public static class DurationFragment extends DialogFragment implements OnSeekBarChangeListener {

    OnDisplayListener callback;
    TextView vsProgress, vs_reverseProgress = null;
    TextView levelTxt=null;

    static DurationFragment newInstance() {
    return new DurationFragment();
    }
     @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View content = inflater.inflate(R.layout.dialog_setting2, null);
    levelTxt = (TextView) content.findViewById(R.id.textView);
    SeekBar levelSeek = (SeekBar) content.findViewById(R.id.seek_bar_voice_volume);
    levelSeek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        // change to progress
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        levelTxt.setText(Integer.toString(progress) + " min");
        }
               @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }
               @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
        });

        builder.setView(content);
        builder.setMessage("Your Time")
        // Positive button
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        // add value to the interface method
        callback.ondurationSubmit(levelTxt.getText().toString());
        }
        });

        return builder.create();
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {


        }
    }

发现错误:

callback.ondurationSubmit(levelTxt.getText().toString());

在这一行中..为什么值不显示在mainfragment中??

共有1个答案

仲孙超
2023-03-14

在DurationFragment中添加一个新的构造函数

public DurationFragment( OnDisplayListener callback) {
    this.callback = callback;
}

在MainFragment中,在onClick中执行以下操作:

DialogFragment durationPicker = new DurationFragment(MainFragment.this);
 类似资料:
  • 我正在尝试将数据从DialogFraank发送到创建此对话框的Fraank。在目标片段中,我使用以下代码: 我还在fragment实现了我的接口: 在DialogFragment中,我使用以下代码: 并发送数据: 我还试图从这个问题中使用onActivityResult(): 接收数据: 但我没有收到数据:(((

  • 现在我有:- 1) 1活动,它是从AppCompactActivity扩展而来的主要活动。 2) 1扩展自fragment的类,这是从主活动(1)-ProfileTeacherActivity调用的片段。java 3) 1个从DialogFragment扩展的fragment类,此对话框从fragment(2)-ModalBox调用。java 所以,基本上,这只是一个简单的执行流程。开始时,显示的

  • 我想让对话框片段(DialogFragment)向我返回一个值,该值是在退出时在编辑数量(editQuantity)中输入的。 但我没有办法让它发挥作用。我可以通过将值传递给intent来实现这一点,但这会破坏当前活动的进度。 除了传递意图之外,还有什么方法可以返回我的值吗?

  • 我正在尝试创建searchdate。我在这里做的是 下面是 所以首先,我打开,它是一个片段。然后单击(编辑文本)后,它将显示(DatePickerFragment)。显示没有问题,也没有错误。 我的问题是,我怎么能设置值后,我选择日期从我的?

  • 生成的路径应该传递给片段,我通过本课中的活动使用接口来练习这一点 此解决方案工作良好,直到用户不改变设备的方向。 当设备在DialogFragment阶段或裁剪活动阶段旋转时,第一个活动和fragemnt被重新创建,并且DialogFragment的实例被销毁。所以我的回调没有运行,什么也没有发生。让我给你看代码: 设置单元活动 AddNewUnitFragment 对话框ImageSelect

  • 我有一个包含EditText的片段,当我单击该EditText时,会出现一个DatePicker对话框来选择日期。 FragmentFile 对话框片段 问题是我不知道如何将数据(选定日期)从DialogFraank传递到片段? 我读了一些主题,但这并没有帮助我感到困惑(抱歉再次提出这个问题)。 主题1主题2