求问各位大神关于fragment切换,软键盘隐藏的问题

============问题描述============

问题背景,一个顶层linearlayout下面有个两个子linearlayout,第一个子linearlayout里面给一排button,可以水平滑动,第二个子linearlayout里面用来放fragment,xml如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:id="@+id/screen" >

<LinearLayout

android:id="@+id/top"

android:layout_width="match_parent"

android:layout_height="50dp"

android:orientation="horizontal">

<HorizontalScrollView

android:layout_width="match_parent"

android:layout_height="match_parent" >

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="#ffff00"

android:orientation="horizontal" >

<Button

android:id="@+id/button1"

android:layout_width="match_parent"

android:layout_height="match_parent" />

<Button

android:id="@+id/button2"

android:layout_width="match_parent"

android:layout_height="match_parent" />

</LinearLayout>

</HorizontalScrollView>

</LinearLayout>

<LinearLayout

android:id="@+id/center"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="2"

android:orientation="vertical" >

</LinearLayout>

</linearlayout>

默认载入一个fragment,里面放几个edittext,用于输入一些信息。在mainactivity里面给顶级linearlayout注册一个ontouchlistener:

screen.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View arg0, MotionEvent arg1) {

// TODO Auto-generated method stub

InputMethodManager imm = (InputMethodManager)VillageActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(screen.getWindowToken(), 0);

//imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);

return false;

}

});

同时给几个button注册click事件,点击不同button切换不同fragment,fragment里面也都是一些edittext。

问题是:

1、当程序开始运行,载入默认fragment后,光标会停留在第一个edittext中,点击这个edittext,输入框会调出,点击空白处,输入框消失。但是当上方按钮后,首先输入框没有隐藏掉,在点击空白处,也没有隐藏。。这是为什么?观察后发现,当点击上方按钮后,edittext中的光标已消失,这个时候焦点集中在button上。。难道输入框的隐藏,前提是当前焦点必须在edittext上?

2、当点击其他按钮,切换到其他fragment后,这个screen的ontouchlistener完全失效,这又是为啥呢?按道理不管第二个子linearlayout里面换什么fragment,都是属于顶级linearlayout的啊,只要监听顶级linearlayout的事件,应该都可以捕获到啊。。

求各位大神解答。。

============解决方案1============

http://blog.csdn.net/yskang/article/details/39012127

============解决方案2============

看着头都昏了,把这个setOnTouchListener写进父类fragment里面把,然后子fragment继承他

时间: 2024-10-26 06:37:09

求问各位大神关于fragment切换,软键盘隐藏的问题的相关文章

MDT部署Win10最后一阶段报错!求老师,大神们帮看看是哪里的问题!!小弟感激不尽~~~

如题:MDT部署Win10到最后一阶段会报错,具体原因也未指出,能力有限日志又不太会看,只能求助于各位.之前搭建好后测试部署是没任何问题的,由于需要捕获镜像,就研究捕获去了,期间各种捕获失败报错,自己一直尝试总算搞定能正常捕获了,打算用捕获到的镜像去部署,呵呵了,捕获没问题了,结果部署又问题来了,自己各种尝试已经实在无能为力解决不了了. 现在的状态是:从开始部署就一直看着试验机MDT任务执行的情况看着貌似没什么问题,分区以及从服务器copy驱动,copy镜像都能执行完成,到最后感觉就快完成重启时

无法运行的贪吃蛇游戏代码,求大神帮忙修改!

#include <iostream> #include <windows.h> #include <stdlib.h> #include <conio.h> #include <time.h> //使用当前时间做种子 enum dir {up,down,left,right}; //枚举类型enum dir //围墙 class Fence { public: void initFence(); void OutputF(); public:

sed命令如何实现XML文件的增删改??急急急!哪位大神告诉下啊

<DC_Public>    < Codec_Space Codec_SpaceValue="0" />    < HeartBeatCfg HeartBeatRate="16" Mux_HB_DECount="2" Codec_HB_DECount="2" Prov_HB_DECount="2" />    < DC_Public PathValue="

Android软键盘状态的切换及其强制隐藏

MainActivity例如以下: package cc.c; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import and

想请问两个有关子网划分的问题。速求大神

1.某公司申请了一个B类网络好,网管把子网掩码设19位,问,最多能划分的子网数是________? 2.将一个C类网段划分成若干大小相等的子网,不限子网大小,有________种划分方法? 想请问两个有关子网划分的问题.速求大神

python 抓取搜狗微信出现的问题,求大神解决

爬取到的data不是想要获取文章页面的源码,而是跳转到验证码的页面的源码.我网上查了一下是由于访问过于频繁导致的,我也加了time.sleep和改了请求头但还是显示不了,求大神支招,除了识别验证码的方式还能怎么做?? import re import urllib.request import time import urllib.error headers = {'User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/2

开发的一个android程序,总是显示无法运行,就退出了。但是没有报错。求大神解救啊!

============问题描述============ 代码如下: 在网上查有人说是intent的问题 原来没有加入监听器的时候没有问题 我是个新手,问题有点没水平啦~ 求大神啊.谢谢谢谢 ============解决方案1============ 把log贴上来看看,是不是menu这个activity没有在manifest 声明 ============解决方案2============ setonclicklistener那句话,把new helplistener前面的那个类型转换删除 =

用java制作简单登陆窗口,求大神教导

import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import java

hdu 1008为何不对?求大神指导!

/*#include<iostream> using namespace std; int main(){ int n; while (cin >> n){ if (n == 0) break; else if (n > 0 && n < 100){ int sum=0, max,min; int *f = new int[n]; for (int i = 0; i < n; i++) cin >> f[i]; max = min =