如何在EditText验证后设置requestFocus
请注意,虽然这是一个重复的问题,但没有任何答案似乎有效。如何在EditText验证后设置requestFocus
注意我一直在尝试更多的东西,根据我添加的评论。总之,这个问题看起来很实际,requestFocus()
实际上禁用了需要编辑的EditText,因为验证发现数据无效。
我有一个6 EditText视图的活动。目前我正在致力于修改日期。对于这个特定的EditText,我通过OnFocusChangedListener验证文本(目前这只是检查文本是否在8到10个字符之间),并且只有当焦点已经到达其他地方。
对于有效日期(考虑到目前进行的非常有限的验证)显示的时间戳,这似乎工作正常。如预期的那样发生。对于无效的日期(即少于8个或超过10个字符)而不是时间戳,会显示一条消息。
但是,对于无效的日期,我希望焦点回到EditText上。这是我遇到问题的地方。因为重点不在EditText上。另外EditText不能,据我所知,手动获取焦点(永久见后)。
我有一些消息写入日志。一个是侦听器被调用,另一个是遇到(!hasFocus)
。我相信这表明我们正在遵循逻辑/过程,并且requestFocus实际上是将焦点放回EditText。所以很显然,某些东西正在消除焦点,我相信只要把重点放在EditText上就可以做到这一点。
另一个奇怪的/不常见的情况是,验证失败后,试图将焦点放在EditText上。光标在所讨论的EditText和以下EditText之间交替。
我看过很多帖子,在这里和其他地方(我目前有16个标签打开)。我尝试了很多东西。我在所有LinearLayout的开始以及XML中的所有EditText上都有focusable和focusableInTouchMode。我也将它们都放在我的活动中。我已经从XML中删除了输入类型(这是一张海报得出的结论)。另一个建议将focusables设置为false,然后回到true。我试图这样做,结果导致无尽的呼叫。我已经转换了Swift软键盘并使用默认值,结果是一样的。
无论如何,这里的代码(目前设置焦点为真两次)。
this.findViewById(R.id.apue_productusage_firstbuydate_data).setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.i(Constants.LOG,"Focus Change Listener - Fired - Before Has Focus Check.");
EditText data_et = (EditText) findViewById(R.id.apue_productusage_firstbuydate_data);
TextView check_tv = (TextView) findViewById(R.id.apue_firstbuydate_check);
if(!hasFocus) {
Log.i(Constants.LOG,"Focus Change Listener - Fired AND it isn't me that is focused.");
String givendate = data_et.getText().toString();
Emsg emsg = validateDate(givendate);
if(emsg.getErrorIndicator()) {
check_tv.setText(emsg.getErrorMessage());
//check_tv.requestFocus();
data_et.setText(data_et.getText());
//data_et.setHint("DD/MM/YYYY");
data_et.setFocusable(true);
data_et.setFocusableInTouchMode(true);
data_et.requestFocusFromTouch();
//data_et.setFocusable(false); These two, this and InTouchMode, caused an endless loop (had to kill)
//data_et.setFocusableInTouchMode(false);
data_et.setFocusable(true);
data_et.setFocusableInTouchMode(true);
data_et.requestFocus();
if(!data_et.isFocusable()) {
Log.i(Constants.LOG,"I am not Focusable even though id had both setFocusable and setFocusableInTouchMode set to true!!!!");
}
if(!data_et.isFocusableInTouchMode()) {
Log.i(Constants.LOG,"I am not FocusableInTouchMode even though id had both setFocusable and setFocusableInTouchMode set to true!!!!");
}
//data_et.requestFocus(View.FOCUS_UP,null);
return;
}
try {
Date date = sdf.parse(givendate);
long timestamp = date.getTime();
((TextView) findViewById(R.id.apue_firstbuydate_check)).setText(Long.toString(timestamp));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
});
.....
public Emsg validateDate(String datetocheck) {
Emsg retmsg = new Emsg(false, 0, "");
// Valid Length Check ie must be a minimum of 8 characters in Length and a maximum of 10
if(datetocheck.length() < 8 | datetocheck.length() > 10) {
retmsg.setAll(true, 1, "Invalid Length (must be 8-10) it was " + datetocheck.length());
return retmsg;
}
return retmsg;
}
的XML(对不起,这个长度,EditText上的问题是apue_productusage_firstbuydate_data和大约2 /三分之二向下): -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin">
<LinearLayout
android:id="@+id/apue_shop_container"
android:layout_width="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_shopname_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/shopnamelabel"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold"/>
<TextView
android:id="@+id/apue_shopname_data"
android:layout_width="500dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:textSize="@dimen/standard_listview_row_height"/>
<TextView
android:id="@+id/apue_shop_id"
android:layout_width="@dimen/standard_realnumb_width"
android:layout_height="match_parent"
android:singleLine="true"
android:textSize="@dimen/standard_listview_row_height"
android:textColor="@color/colorRequiredLabel"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_aisle_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_aislename_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/aislelabel"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold"/>
<TextView
android:id="@+id/apue_aislename_data"
android:layout_width="500dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:textSize="@dimen/standard_listview_row_height"/>
<TextView
android:id="@+id/apue_aisle_id"
android:layout_width="@dimen/standard_realnumb_width"
android:layout_height="match_parent"
android:singleLine="true"
android:textSize="@dimen/standard_listview_row_height"
android:textColor="@color/colorRequiredLabel"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_product_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productlabel"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold"/>
<TextView
android:id="@+id/apue_product_data"
android:layout_width="500dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:textSize="@dimen/standard_listview_row_height"/>
<TextView
android:id="@+id/apue_product_id"
android:layout_width="@dimen/standard_realnumb_width"
android:layout_height="match_parent"
android:singleLine="true"
android:textSize="@dimen/standard_listview_row_height"
android:textColor="@color/colorRequiredLabel"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productcost_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_productcost_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_cost_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold"/>
<EditText
android:id="@+id/apue_productcost_data"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="@dimen/standard_realnumb_width"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:padding="0dp"
android:textSize="@dimen/standard_listview_row_height"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productusage_orderinaisle_container"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_orderinaisle_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_orderinaisle_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold"/>
<EditText
android:id="@+id/apue_productusage_orderinaisle_data"
android:focusable="true"
android:focusableInTouchMode="true"
android:padding="0dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:textSize="@dimen/standard_listview_row_height"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_advancedoptions_explian_text_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height">
<TextView
android:id="@+id/apue_advancedoptions_explian_text"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_subheading_height"
android:text="@string/productusage_advanced_options_explanatory_text"
android:textSize="@dimen/standard_subheading_text_size"
android:textColor="@color/advancedinputoption"
android:textStyle="bold|italic"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productusage_buycount_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_buycount_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_buycount_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold|italic"
android:textColor="@color/advancedinputoption"/>
<EditText
android:id="@+id/apue_productusage_buycount_data"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:padding="0dp"
android:text=""
android:textSize="@dimen/standard_listview_row_height"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productusage_firstbuydate_container"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_firstbuydate_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_firstbuydate_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold|italic"
android:textColor="@color/advancedinputoption"/>
<EditText
android:id="@+id/apue_productusage_firstbuydate_data"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:focusable="true"
android:focusableInTouchMode="true"
android:padding="0dp"
android:textSize="@dimen/standard_listview_row_height"/>
<TextView
android:id="@+id/apue_firstbuydate_check"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:padding="0dp"
android:textSize="18dp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productusage_lastbuydate_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_lastbuydate_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_lastbuydate_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold|italic"
android:textColor="@color/advancedinputoption"/>
<EditText
android:id="@+id/apue_productusage_lastbuydate_data"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:padding="0dp"
android:textSize="@dimen/standard_listview_row_height"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_productusage_mincost_container"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_heading_height"
android:orientation="horizontal">
<TextView
android:id="@+id/apue_product_mincost_label"
android:layout_width="200dp"
android:layout_height="match_parent"
android:singleLine="true"
android:text="@string/productusage_mincost_label"
android:textSize="@dimen/standard_heading_text_size"
android:textStyle="bold|italic"
android:textColor="@color/advancedinputoption"/>
<EditText
android:id="@+id/apue_productusage_mincost_data"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:text=""
android:padding="0dp"
android:textSize="@dimen/standard_listview_row_height"/>
</LinearLayout>
<LinearLayout
android:id="@+id/apue_actions"
android:layout_width="match_parent"
android:layout_height="@dimen/standard_button_height"
android:gravity="right"
android:orientation="horizontal">
<Button
android:id="@+id/apue_savechanges"
android:layout_width="@dimen/standard_button_width"
android:layout_height="@dimen/standard_button_height"
android:backgroundTint="@color/colorNormalButton"
android:textColor="@color/colorNormalButtonText"
android:text="@string/standardsavebutton"/>
<Button
android:id="@+id/apue_advancedoptions"
android:layout_width="@dimen/standard_button_width"
android:layout_height="@dimen/standard_button_height"
android:backgroundTint="@color/colorNormalButton"
android:textColor="@color/colorNormalButtonText"
android:text="@string/standardmoretext"
android:onClick="apue_advancedoptions_flip"/>
<Button
android:id="@+id/apue_done"
android:layout_width="@dimen/standard_button_width"
android:layout_height="@dimen/standard_button_height"
android:backgroundTint="@color/colorNormalButton"
android:textColor="@color/colorNormalButtonText"
android:text="@string/standarddonebutton"
android:onClick="apue_done"/>
</LinearLayout>
</LinearLayout>
下面是一个典型的日志,我已经改变日期为无效日期(注意isfocuable检查都从来没有发射,因此排除不会出现申请按
公共最后布尔requestFocus()方法调用 这试着给集中到一个特定的fic视图或其 后代之一,并提供关于重点目标方向的提示。 如果视图不可聚焦,则在触摸模式下,当设备为 时,视图实际上不会聚焦 (isFocusable()返回false),或者聚焦在触摸模式(isFocusableInTouchMode())中,而不是 。 从developer.android.com/intl/ko/reference/android/view/View.html#requestFocus()
这里的日志(相关部分(对焦变化信息)是从22:38:27.192这是周围的路往下3/4): -
03-01 22:38:04.304 24757-24757/? I/Timeline: Timeline: Activity_launch_request id:mjt.shopper time:2150430366
03-01 22:38:04.305 769-1316/? V/ActivityManager: notify app switch for new activity mjt.shopper Where 1
03-01 22:38:04.306 769-1316/? I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=mjt.shopper/.MainActivity (has extras)} from uid 10025 on display 0
03-01 22:38:04.308 769-28600/? D/ActivityManager: notifyAppSwitch resumed: true; pkg:mjt.shopper
03-01 22:38:04.310 769-1316/? V/WindowManager: addAppToken: AppWindowToken{11fa5df1 token=Token{19a3f198 ActivityRecord{3fc47f7b u0 mjt.shopper/.MainActivity t1012}}} to stack=1 task=1012 at 0
03-01 22:38:04.323 769-795/? V/WindowManager: Adding window Window{22eb5bb0 u0 Starting mjt.shopper} at 3 of 9 (after Window{a17be98 u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher})
03-01 22:38:04.396 769-32022/? I/ActivityManager: Start proc 28604:mjt.shopper/u0a121 for activity mjt.shopper/.MainActivity
03-01 22:38:04.530 28604-28604/? I/mjt.shopper: onExpand started.
03-01 22:38:04.588 28604-28604/? I/mjt.shopper: onExpand completed.
03-01 22:38:04.734 769-1347/? V/WindowManager: Adding window Window{b38efe5 u0 mjt.shopper/mjt.shopper.MainActivity} at 3 of 10 (before Window{22eb5bb0 u0 Starting mjt.shopper})
03-01 22:38:04.891 769-795/? I/ActivityManager: Displayed mjt.shopper/.MainActivity: +536ms
03-01 22:38:04.891 769-795/? I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{3fc47f7b u0 mjt.shopper/.MainActivity t1012} time:2150430953
03-01 22:38:08.659 28604-28604/? I/Timeline: Timeline: Activity_launch_request id:mjt.shopper time:2150434722
03-01 22:38:08.660 769-9335/? V/ActivityManager: notify app switch for new activity mjt.shopper Where 0
03-01 22:38:08.661 769-9335/? I/ActivityManager: START u0 {cmp=mjt.shopper/.ShopListByCursorActivity (has extras)} from uid 10121 on display 0
03-01 22:38:08.667 769-9335/? V/WindowManager: addAppToken: AppWindowToken{1c1e369d token=Token{3dfa5174 ActivityRecord{2dd34547 u0 mjt.shopper/.ShopListByCursorActivity t1012}}} to stack=1 task=1012 at 1
03-01 22:38:08.679 769-1301/? D/AppOps: noteOperation: allowing code 11 uid 10121 package mjt.shopper
03-01 22:38:08.681 769-28630/? D/ActivityManager: notifyAppSwitch resumed: true; pkg:mjt.shopper
03-01 22:38:08.773 769-20945/? V/WindowManager: Adding window Window{2f2c9f99 u0 mjt.shopper/mjt.shopper.ShopListByCursorActivity} at 4 of 11 (after Window{b38efe5 u0 mjt.shopper/mjt.shopper.MainActivity})
03-01 22:38:09.284 769-795/? I/ActivityManager: Displayed mjt.shopper/.ShopListByCursorActivity: +592ms
03-01 22:38:09.491 769-795/? I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{2dd34547 u0 mjt.shopper/.ShopListByCursorActivity t1012} time:2150435554
03-01 22:38:11.264 769-1180/? V/WindowManager: not Base app: Adding window Window{e120e37 u0 mjt.shopper/mjt.shopper.ShopListByCursorActivity} at 5 of 11
03-01 22:38:13.329 28604-28604/? I/Timeline: Timeline: Activity_launch_request id:mjt.shopper time:2150439392
03-01 22:38:13.331 769-1301/? V/ActivityManager: notify app switch for new activity mjt.shopper Where 0
03-01 22:38:13.331 769-1301/? I/ActivityManager: START u0 {cmp=mjt.shopper/.AddProductToShopActivity (has extras)} from uid 10121 on display 0
03-01 22:38:13.336 769-28645/? D/ActivityManager: notifyAppSwitch resumed: true; pkg:mjt.shopper
03-01 22:38:13.343 769-1301/? V/WindowManager: addAppToken: AppWindowToken{298e7210 token=Token{31ef56d3 ActivityRecord{d1398c2 u0 mjt.shopper/.AddProductToShopActivity t1012}}} to stack=1 task=1012 at 2
03-01 22:38:13.501 769-30333/? V/WindowManager: Adding window Window{164e8d2f u0 mjt.shopper/mjt.shopper.AddProductToShopActivity} at 5 of 11 (after Window{2f2c9f99 u0 mjt.shopper/mjt.shopper.ShopListByCursorActivity})
03-01 22:38:14.095 769-795/? I/ActivityManager: Displayed mjt.shopper/.AddProductToShopActivity: +721ms
03-01 22:38:14.268 769-795/? I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{d1398c2 u0 mjt.shopper/.AddProductToShopActivity t1012} time:2150440331
03-01 22:38:17.189 769-785/? V/WindowManager: not Base app: Adding window Window{18b9ac3 u0 mjt.shopper/mjt.shopper.AddProductToShopActivity} at 6 of 12
03-01 22:38:21.695 769-1323/? D/AppOps: noteOperation: allowing code 11 uid 10121 package mjt.shopper
03-01 22:38:21.702 28604-28604/? I/Timeline: Timeline: Activity_launch_request id:mjt.shopper time:2150447764
03-01 22:38:21.703 769-32022/? V/ActivityManager: notify app switch for new activity mjt.shopper Where 0
03-01 22:38:21.704 769-32022/? I/ActivityManager: START u0 {cmp=mjt.shopper/.ProductUsageEdit (has extras)} from uid 10121 on display 0
03-01 22:38:21.715 769-28664/? D/ActivityManager: notifyAppSwitch resumed: true; pkg:mjt.shopper
03-01 22:38:21.721 769-32022/? V/WindowManager: addAppToken: AppWindowToken{24f3a1ca token=Token{2d14e935 ActivityRecord{5184f6c u0 mjt.shopper/.ProductUsageEdit t1012}}} to stack=1 task=1012 at 3
03-01 22:38:21.910 769-785/? V/WindowManager: Adding window Window{6ab2004 u0 mjt.shopper/mjt.shopper.ProductUsageEdit} at 6 of 13 (after Window{164e8d2f u0 mjt.shopper/mjt.shopper.AddProductToShopActivity})
03-01 22:38:22.036 769-795/? I/ActivityManager: Displayed mjt.shopper/.ProductUsageEdit: +273ms
03-01 22:38:22.243 769-795/? I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{5184f6c u0 mjt.shopper/.ProductUsageEdit t1012} time:2150448306
03-01 22:38:27.192 28604-28604/? I/mjt.shopper: Focus Change Listener - Fired - Before Has Focus Check.
03-01 22:38:27.220 769-32022/? V/WindowManager: Adding window Window{3a989234 u0 PopupWindow:216f0592} at 7 of 13 (after Window{6ab2004 u0 mjt.shopper/mjt.shopper.ProductUsageEdit})
03-01 22:38:47.465 28604-28604/? I/mjt.shopper: Focus Change Listener - Fired - Before Has Focus Check.
03-01 22:38:47.465 28604-28604/? I/mjt.shopper: Focus Change Listener - Fired AND it isn't me that is focused.
03-01 22:38:47.487 28604-28604/? I/mjt.shopper: Focus Change Listener - Fired - Before Has Focus Check.
03-01 22:38:47.523 769-873/? V/WindowManager: Adding window Window{20591f6 u0 PopupWindow:ae45019} at 7 of 13 (after Window{6ab2004 u0 mjt.shopper/mjt.shopper.ProductUsageEdit})
03-01 22:38:52.016 769-9335/? V/WindowManager: Adding window Window{109fec9 u0 PopupWindow:581fabf} at 7 of 13 (after Window{6ab2004 u0 mjt.shopper/mjt.shopper.ProductUsageEdit})
我通过在onFocusChangeListener之外执行验证和随后的requestFocus来解决问题。相反,我通过保存按钮调用验证和requestFocus。但是,这不是理想的情况,因为需要验证大量的EditText。
看来,从相应的EditText的OnFocusChangeListener中为自身设置EditText的焦点是简单的可撤销的。
我一直在努力。我将布局更改为单个相对布局,而不是多个线性布局。行为没有改变。然后,我将大多数后验证无效日期代码注释掉,只设置检查/结果TextView中的文本(即不设置焦点)。 EditText然后可以手动聚焦和编辑。现在我将逐步添加注释掉的行,以便查看导致行为的原因。 – MikeT
加入的第一行是'check_tv.requestFocus();'将焦点设置为显示消息验证错误消息或时间戳的TextView。这没有引入这个问题。 – MikeT
下一行加入'data_et.setFocusable(true);'这没有引入这个问题。 – MikeT