【问题标题】:Time Picker Fragments Differentiation时间选择器片段区分
【发布时间】:2018-12-13 18:59:47
【问题描述】:

我遇到了一个问题,即我的应用程序正在正确构建并且按钮按预期工作,但我正在使用两个时间选择器片段编辑的文本字段正在由开始时间选择器和结束时间选择器进行编辑。

public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button_start = (Button) findViewById(R.id.start_picker_button);
        button_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment timePicker1 = new TimePickerStartFragment();
                timePicker1.show(getSupportFragmentManager(),"time picker start");
            }
        });

        Button button_end = (Button) findViewById(R.id.end_picker_button);
        button_end.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment timePicker2 = new TimePickerEndFragment();
                timePicker2.show(getSupportFragmentManager(),"time picker end");
            }
        });

    }

    @Override
    public void onTimeSet(TimePicker TimePickerStartFragment, int hourOfDay, int minute) {
        TextView textView = (TextView)findViewById(R.id.textView);
        textView.setText("Hour: " + hourOfDay + " " + "Minute: " + minute);

我的应用程序看起来像两个按钮,一个用于开始时间片段,另一个用于结束时间片段。我有两个单独的时间选择器片段 java 文件。但是,当我设置结束时间片段时,它仍然会修改开始时间文本。我想让开始时间选择器只修改开始时间文本,结束时间选择器修改结束时间文本。

为了进一步阐明何时按下选择开始时间按钮 TimePickerStratFragment 打开并选择了一个时间,这会修改一个名为 textView 的文本字段。 However when the time end button fragment is selected it also modifies the text view.我希望时间结束按钮不修改文本视图。

【问题讨论】:

  • 我不太明白您所说的“当我设置结束时间片段时它仍然会修改开始时间文本”是什么意思。请澄清。
  • 你好,我已经编辑澄清了这个问题。
  • 您的问题很可能是两个对话都调用了onTimeSet 方法,而不仅仅是开始对话。因此,两个对话都会改变 TextView。
  • 是的,我想了很多,有建议的标准解决方案吗?
  • 然后测试一下。在onTimeSet()方法中打一个print,看看被打开的TimePickerEndFragment是否调用它。

标签: android android-fragments timepicker android-timepicker


【解决方案1】:

添加一个字符串值来检查哪个时间选择器被打开,因为 onTimeSet 被触发两个片段使用这样的东西

String timeTag;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button_start = (Button) findViewById(R.id.start_picker_button);
        button_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timeTag = "from";
                DialogFragment timePicker1 = new TimePickerStartFragment();
                timePicker1.show(getSupportFragmentManager(),"time picker start");
            }
        });

        Button button_end = (Button) findViewById(R.id.end_picker_button);
        button_end.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timeTag = "to";
                DialogFragment timePicker2 = new TimePickerEndFragment();
                timePicker2.show(getSupportFragmentManager(),"time picker end");
            }
        });

    }

    @Override
    public void onTimeSet(TimePicker TimePickerStartFragment, int hourOfDay, int minute) {

        if(Objects.equals(timeTag, "from")) {
            TextView textView = (TextView)findViewById(R.id.textView);
            textView.setText("Hour: " + hourOfDay + " " + "Minute: " + minute);
        }

        if(Objects.equals(timeTag, "to")) {

        }
}

【讨论】:

  • 解决方案有效,这正是我想要做的。
猜你喜欢
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2014-05-14
  • 2015-05-02
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多