我已经按照这里的各种问题和答案设置我的Android活动来覆盖onConfigurationChanged()
,以便在软键盘打开和关闭时执行逻辑.这是我的代码的相关摘录.我把它归结为最简单的场景:
AndroidManifest.xml中
...
<activity
android:name=".SearchActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation"
/>
...
Run Code Online (Sandbox Code Playgroud)
SearchActivity.java
...
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();
}
...
Run Code Online (Sandbox Code Playgroud)
当我改变方向时,上面的代码将显示Toast,但当软键盘打开或关闭时,什么都不做.我已经测试过通过EditText聚焦打开软键盘,并通过长按菜单按钮手动打开它.也没有onConfigurationChanged()
拨打电话.
所以现在的代码似乎可以工作,因为方向更改会触发,但我对软键盘没有任何帮助.有任何想法吗?如果答案是"onConfigurationChanged()没有捕获软键盘事件",那么检测和处理此事件的适当解决方案是什么?
为了防止它相关,我正在测试运行Gingerbread的Droid X.
有没有办法从正在使用量词的正则表达式中获取多个捕获组?例如,假设我有这些数据(简化了我必须处理的内容):
<td>Data 1</td>
<td>data 2</td>
<td>data 3</td>
<td>data 4</td>
Run Code Online (Sandbox Code Playgroud)
现在,如果我写这样的正则表达式:
(?:<td>(.+?)<\/td>\s*){4}
Run Code Online (Sandbox Code Playgroud)
我最终只有一个捕获组,最后一个是"数据4".有没有办法使用量词并最终得到4个捕获组,或者我被迫写这样的正则表达式来得到我想要的东西:
<td>(.+?)<\/td>\s*<td>(.+?)<\/td>\s*<td>(.+?)<\/td>\s*<td>(.+?)<\/td>
Run Code Online (Sandbox Code Playgroud)
是的,我很清楚我可以通过编程方式更容易地破解这个简单的例子然后应用和必要的正则表达式或更简单的模式匹配.我正在使用的数据要复杂得多,我真的想使用正则表达式来处理所有的解析.
我的应用程序开头有一个登录页面,我不想在视图堆栈上.有没有办法在登录后加载我的第一个登录后视图而不使用UINavigatorController
?
有没有更好的方法来做到这一点?我应该使用2 UINavigationControllers
吗?有没有办法改变RootViewController
一个UINavigationController
?