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

在同一活动中实现两个TimePicker

法浩壤
2023-03-14

我在同一个活动中使用了两个时间选择器,让用户为特定任务选择开始时间和停止时间,我使用了支持库中可用的DialogFragment类,以向后兼容旧的Android版本。

package com.calls.only;

import java.util.Calendar;

import android.app.Dialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;

public class TimePickerFragment extends DialogFragment {

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) {
         // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        if (!(getActivity() instanceof OnTimeSetListener)) throw new IllegalStateException("Activity should implement OnTimeSetListener!");
            OnTimeSetListener timeSetListener =  (OnTimeSetListener) getActivity();

        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), timeSetListener, hour, minute, false);
    }
}
package com.calls.only;
import java.util.Calendar;
import java.util.TimeZone;
import android.os.Bundle;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.DialogFragment;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener {

    public void InputStartTime(View v) {
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getSupportFragmentManager(), "timePicker");
    }

    public void InputEndTime(View v) {
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getSupportFragmentManager(), "timePicker");
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            Log.i("TimePicker", "Time picker set!");
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

共有1个答案

松飞翮
2023-03-14

不是在活动中实现TimePickerDialog.OnTimeSetListener,而是将其提供给构造函数中的片段。这样,每个实例都可以做不同的事情。

所以你可以像这样使用它:

  frag1 = new TimePickerFragment(new TimePickerDialog.OnTimeSetListener() { /* Your implementation*/ });
 类似资料:
  • 我正在做一个NFC应用程序,想知道这种情况是否可能: 比如说,我在一个项目中有两个NFC标签和两个活动。NFC A是通过在NFC A中编写MIME类型来打开活动A的 在项目的清单文件中,活动A有以下意图过滤器: 所以,这很好用。我将添加另一个NFC标签和另一个活动。NFC B是为了开放活动B而编写的 现在,我应该如何将MIME类型写入NFC B并为活动B设置意图过滤器?考虑到活动A和活动B都在一个

  • 在Android中,我需要将第二个页面滑动到另一个页面上。 布局1覆盖页面左侧的80%。布局2显示其余的20%。往右走。 然后我需要拖动/滑动布局2在布局1的顶部,并将其滑回。

  • 我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误; activity_main.xml 片段的布局1 片段2的布局

  • 这就是活动,所以我想在这里扩展JavaFX活动类,因为我们不能在java中扩展两个类,我该如何在AppCompattivity旁边扩展类。

  • 我正在写一个Android应用程序,有Java和静态编程语言活动。我希望从静态编程语言移动到Java,已经完成了,现在我希望回到静态编程语言活动,我找不到具体的代码。 我的应用程序名称是starter,Kotlin活动是MainActivity。kt和java类是face_detect。JAVA我已经试过:` ` 我希望单击face_detect上的按钮。java,这将把我带到MainActivi

  • 我总共有三个活动,我正在为每个活动实现admob,每个活动都有自己的横幅,当活动被改变时,另一个活动挂了一点,因为广告加载在后台,是否有任何方法,一个横幅出现在所有活动时,切换,以避免延迟。