在tap的碎片上与活动进行绑定实现点击事件(日期时间选择以及按钮跳转时间)

主要是掌握怎样在Fragment类型的.java文件中实现对于文本框或者按钮点击事件的触发操作。

相应的出发时间都是之前的代码。主要是怎样在Fragment怎样实现相应的操作主要是对于getActivity()。的相关应用。

对于相关的知识点:

1、

onCreatView是碎片的生命周期中的一种状态,在为碎片创建视图(加载布局)时调用
使用:View view=inflater.inflate(R.layout.right_fragment,container,false);
三个参数的含义及作用
LayoutInflater inflater:作用类似于findViewById(),findViewById()用来寻找xml布局下的具体的控件(Button、TextView等),LayoutInflater inflater()用来找res/layout/下的xml布局文件
ViewGroup container:表示容器,View放在里面(还不理解)
Bundle savedInstanceState:保存当前的状态,在活动的生命周期中,只要离开了可见阶段,活动很可能就会被进程终止,这种机制能保存当时的状态
2、

关于android中onCreateView和onCreate之间的区别

onCreate是指创建该fragment,类似于Activity.onCreate,你可以在其中初始化除了view之外的东西。

onCreateView是创建该fragment对应的视图,你必须在这里创建自己的视图并返回给调用者、

3、

getActivity();来代替context获取他的相应的对象这样在Fragment中好运行点击事件。

主要的两个.java文件的代码如下:

WeixinFragment.java
package com.example.wenandroidcheck11;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TimePicker;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import java.util.Calendar;

public class WeixinFragment extends Fragment implements  View.OnClickListener, DatePicker.OnDateChangedListener, TimePicker.OnTimeChangedListener {
    private LinearLayout llDate, llTime;
    private TextView tvDate, tvTime;
    private int year, month, day, hour, minute;
    //在TextView上显示的字符
    private StringBuffer date, time;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab1, container, false);
        llDate = (LinearLayout) view.findViewById(R.id.ll_date);
        tvDate = (TextView) view.findViewById(R.id.tv_date);
        llTime = (LinearLayout)  view.findViewById(R.id.ll_time);
        tvTime = (TextView)view.findViewById(R.id.tv_time);
        llDate.setOnClickListener(this);
        llTime.setOnClickListener(this);
        date = new StringBuffer();
        time = new StringBuffer();
        initDateTime();
        return view;
    }

    /**
     * 获取当前的日期和时间
     */
    private void initDateTime() {
        Calendar calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH)+1;
        day = calendar.get(Calendar.DAY_OF_MONTH);
        hour = calendar.get(Calendar.HOUR);
        minute = calendar.get(Calendar.MINUTE);

    }
      @Override
        public void onClick (View v){
            switch (v.getId()) {
                case R.id.ll_date:
                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (date.length() > 0) { //清除上次记录的日期
                                date.delete(0, date.length());
                            }
                            month += 1;
                            tvDate.setText(date.append(String.valueOf(year)).append("年").append(String.valueOf(month)).append("月").append(day).append("日"));
                            dialog.dismiss();//取消对话框的作用
                        }
                    });
                    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
                    final AlertDialog dialog = builder.create();//创建对话框
                    View dialogView = View.inflate(getActivity(), R.layout.dialog_date, null);
                    /*这个方法可以得到view,但是对view中设置居中等什么属性都是无效的,还有就是设置的宽度也是无效的,默认只能是wrap*/
                    final DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.datePicker);

                    dialog.setTitle("设置日期");
                    dialog.setView(dialogView);//可以通过自定义一个View,设计成自己想要的不同的dialog,(会话)
                    dialog.show();//显示对话框
                    //初始化日期监听事件
                    datePicker.init(year, month - 1, day, this);
                    break;
                case R.id.ll_time:
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(getActivity());
                    builder2.setPositiveButton("设置", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (time.length() > 0) { //清除上次记录的日期
                                time.delete(0, time.length());
                            }
                            tvTime.setText(time.append(String.valueOf(hour)).append("时").append(String.valueOf(minute)).append("分"));
                            dialog.dismiss();
                        }
                    });
                    builder2.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
                    AlertDialog dialog2 = builder2.create();
                    View dialogView2 = View.inflate(getActivity(), R.layout.dialog_time, null);

                    TimePicker timePicker = (TimePicker) dialogView2.findViewById(R.id.timePicker);
                    timePicker.setCurrentHour(hour);
                    timePicker.setCurrentMinute(minute);
                    timePicker.setIs24HourView(true); //设置24小时制

                    timePicker.setOnTimeChangedListener(this);
                    dialog2.setTitle("设置时间");
                    dialog2.setView(dialogView2);
                    dialog2.show();
                    break;
            }
            /**
             * 日期改变的监听事件
             *
             * @param view
             * @param year
             * @param monthOfYear
             * @param dayOfMonth
             */

        }

        @Override
        public void onDateChanged (DatePicker view,int year, int monthOfYear, int dayOfMonth){
            this.year = year;
            this.month = monthOfYear;
            this.day = dayOfMonth;
        }
        /**
         * 时间改变的监听事件
         *
         * @param view
         * @param hourOfDay
         * @param minute
         */
        @Override
        public void onTimeChanged (TimePicker view,int hourOfDay, int minute){
            this.hour = hourOfDay;
            this.minute = minute;
        }

}

Frdfragment.java

package com.example.wenandroidcheck11;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class FrdFragment extends Fragment implements View.OnClickListener{
    private Button btn_register;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab2, container, false);
        btn_register =(Button) view.findViewById(R.id.button_register);
        btn_register.setOnClickListener(this);
        return view;
    }
    @Override
    public void onClick(View view){
        //String text = "csdnicjbsndicnsdicnsojdn";
        //Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(getActivity(),RegisterActivity1.class);
        startActivity(intent);

    }
}

这样实现在tap中界面中按钮的触发时间。并且实现界面的跳转。

点击注册后的页面跳转

点击返回登录,会跳转到初始的界面



原文地址:https://www.cnblogs.com/dazhi151/p/12257495.html

时间: 2024-08-01 06:43:18

在tap的碎片上与活动进行绑定实现点击事件(日期时间选择以及按钮跳转时间)的相关文章

jquery on()绑定的点击事件在js动态新添加的元素上无效

js生成的元素绑定事件必须使用live,但新版的jq,已经淘汰了live,可以用on方法代替,但必须注意写法. $('.class').on("click",function(){--});相当于$('.class').bind("click",function(){--});$(document).on("click",'.class',function(){--});相当于$('.class').live("click",

返回数据给上一个活动

我们都知道,android开发中一个活动跳转时是可以带数据传递给下一个活动的,那么能不能够返回数据给上一个活动呢?答案是肯定的.不过不同的是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动Intent来传递数据.通过查阅文档你会发现,Activity中还有一个startActivityForResult()方法也是用于启动活动的,但这个方法期望在活动销毁的时候能返回一个结果给上一个活动.毫无疑问,这就是我们所需要的. startActivityForResult()方法接收

日历上添加活动通知(Asp.net)

<div id="calendar_contain"> </div> <script language="javascript" src="js/event.js"></script> <link href="css/gallery.css" rel="stylesheet" type="text/css" /> <scr

重磅福利!CoinEX8推出免费上币活动

在数字资产不长的历史中,数字资产交易平台发挥了极大作用,承载着安全交易.公允价格形成与监管体系建立等基础需求.熊市下,数字资产交易平台的项目层次.上币评审时效等方面显得尤为重要. 目前大多数项目上交易平台都会花费动则上千万费用,有的虽然是投票上币,但投票本身就会消耗大量资金.对项目方而言,已成为不小的负担,严重的影响了项目的发展.CoinEX8认为这些费用应当真正被用于项目发展落地,才能让整个区块链行业健康的发展,同时亦能保障用户的权益.因此,CoinEX8特推出免费上币活动,优选10个优质项目

下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(7)在关键路径上,活动GH的松弛时间是(8)。

2014年下半年 网络工程师 上午试卷 综合知识  下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(7)在关键路径上,活动GH的松弛时间是(8). A.0B.1C.2D.3 解析: 关键路径从起点开始数到终点最长的那一条就是关键路径: GH活动的松弛时间是指值=通过整个活动的最长路径-通过整个活动经过GH的最长路径=20-17=3 故松弛时间是3天 原文地址:https://www.cnblogs.com/liuzeyu12a/p/

线上的活动发布平台最优选-创成汇

在如今这个"大众创新,万众创业"的时代,各地政府.各大投资机构及各大众创空间为了更好的鼓励,孵化创新性企业,都纷纷开始办起各类创新创业大赛,大赛有了,下一步该寻找的就是要在哪里发布大赛,除去政府机构网站外还可以在一些线上的活动发布平台,活动发布平台一般都会有其自身的项目库.宣传渠道.及专业的项目征集人员.例如创成汇. 创成汇是国内专业的创新创业成果转化平台,采用大数据.智慧智能等新兴技术理念和互联互享等先进产业模式,有效整合优质创投资源.在承办大赛方面也是有丰富经验的,就近而言,除了前

appium+python自动化37-adb shell模拟点击事件(input tap)

前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其它的方法去点击,比如我们可以用adb去执行点击事件 input事件 1.先查看input事件语法有哪些,首先确保手机连上电脑(我这里是电脑上打开的手机模拟器) > adb device > adb shell > input C:\Users\Gloria>adb devices Li

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是指备份执行时当天的日期),最后只保留最近7天的备份 2.上传/home/osyunweibak里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份. 3.FTP服务器:192.168.21.139 端口:21 账号:osyunwei 密码:123456 osyunweibak为备份文件存放目

百度地图上自定义图片覆盖物上加点击事件

在百度地图上加自定义图片覆盖物之后,在这个覆盖物上加点击手势,发现并不识别.原因不太清楚.不过可以通过别的方法来实现这个功能. 需要用到BMKMapViewDelegate中的方法: - (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate 然后判断所点击的坐标是否在指定区域内,在指定区域内之后,调用自己写的相应地方法即可. 百度地图上自定义图片覆盖物上加点击事件,布布扣,