繁体   English   中英

如何修复FragmentDialog中的show方法

How to fix show method in FragmentDialog

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

当我运行该应用程序停止工作时,我编写此代码以显示项目中的时间。 但是,当我删除显示方法程序时,按下按钮时,程序没有任何显示

任何帮助请

这是代码

public class AlarmFragment extends Fragment implements 
    TimePickerDialog.OnTimeSetListener{
    private Button clockBtn;
    private TextView time;
 public AlarmFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view= inflater.inflate(R.layout.fragment_alarm, container, false);
    time = view.findViewById(R.id.alarm_time);
    clockBtn= view.findViewById(R.id.clock_btn);
    clockBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            DialogFragment clock= new TimeClock();
              ///////////show method /////////
             clock.show(getActivity().getSupportFragmentManager(),"Time Picker");


        }
    });
    return view;
}
  @Override
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        time.setText("Time:" + hourOfDay +" : "+minute);
      }}

这是TimeClock片段

import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import java.util.Calendar;

public class TimeClock extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    Calendar c = Calendar.getInstance();
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);
  return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity()));
    }
}

编辑:-所以我更改了上面的return语句,然后就可以了。但是AlarmFragment中的onTimeSet方法没有执行,我按如下操作进行了:-

Activity activity = new AlarmFragment().getActivity();

        return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener)activity, hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity())); 
2 个回复

在承载AlarmFragmentActivity中,必须实现TimePickerDialog.OnTimeSetListener

例如:

public class MainActivity implements TimePickerDialog.OnTimeSetListener {

    ...

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        Toast.makeText(this, "chosen hour of day: " + hourOfDay, Toast.LENGTH_LONG).show();
    }
}

您正在收到ClassCastException因为您的getActivity不是TimePickerDialog.OnTimeSetListener ,但是您的AlarmFragment是:

// this is where it fails, change this line, do not copy
return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity()));

您可以重构TimeClock类以委派侦听器:

public class TimeClock extends DialogFragment {

    private TimePickerDialog.OnTimeSetListener listener;

    public void setOnTimeSetListener(TimePickerDialog.OnTimeSetListener listener) {
        this.listener = listener;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        // Now delegates the listener to the constructor
        return new TimePickerDialog(getActivity(), listener, hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity()));
    }
}

并在TimeClock.show之前设置您的监听器:

DialogFragment clock= new TimeClock();
clock.setOnTimeSetListener(this);
clock.show(getActivity().getSupportFragmentManager(), "Time Picker");
2 FragmentDialog中的圆角

我知道有人问过账单时间的问题,但没人发现我发现那对我没有帮助。我有这样的体形 将此添加到我的主RelativeLayout我的布局文件中: 但是问题是我需要一定尺寸的对话框,我的布局建立了这个对话框,但是当我添加形状时,形状适用于所有屏幕,所有元素都会改变它们的位置,对我没有任何 ...

3 如何修复#show错误中的NoMethodError?

我正在尝试通过链接访问特定评论: show.html.erb: reviews_controller.rb: 我在检查表中有一列名为pro的列,如迁移文件所示: 结束 我得到的错误是: 即使当我在show方法中包含'puts @review'时,在r ...

8 覆盖jquery中的show方法

我正在编辑一个网络应用程序(不是我的代码),并且当一些消息或通知出现时会出现很多模态,所以我想为该模态添加声音 这个模态在整个应用程序中存在的问题,以及很多 jquery .show 方法,我应该跟踪并添加该声音 我试图听取更改,例如更改 css 属性,但没有奏效 我怎样才能覆盖 show ...

9 如何在FragmentDialog中设置标题和文本?

我有一个MainActivity,其中包含5个片段,其中2个片段在右上角的工具栏上有一个帮助图标。 我在其他3个片段上都隐藏了此图标。 单击帮助图标后,将显示一个警告对话框,其中包含标题,消息和一个肯定按钮。 这是我的警报对话框代码: 这就是我在MainActivity中显示的 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM