在我的活动中,有一些东西在后台线程中进行,后者在Activity_1中开始.后台线程的处理需要一段时间,我想通过一个完成后通知用户AlertDialog.但是,在此期间用户可能已更改为Activity_2或Activity_3,并且我希望始终在当前活动中弹出AlertDialog.
知道如何实现这个吗?
下面的代码适用于在1.5,1.6和2.0上运行的实际设备以及在2.1上运行的仿真器.
但是,在Nexus One(运行2.1)上执行它会引发IOException:
java.io.IOException: Unable to parse response from server
at android.location.Geocoder.getFromLocation(Geocoder.java:124)
Run Code Online (Sandbox Code Playgroud)
这是它发生的代码片段:
Double myLatitude = AppObject.myLocation.getLatitude();
Double myLongitude = AppObject.myLocation.getLongitude();
DEBUG.i(TAG, "My location: " + myLatitude + " | " + myLongitude);
Geocoder geocoder = new Geocoder(MainActivity.this);
java.util.List<Address> addressList;
try {
addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5);
if(addressList!=null && addressList.size()>0) {
currentAddress = new String();
DEBUG.i(TAG,addressList.get(0).toString());
currentAddress = addressList.get(0).getAddressLine(0) + ", "
+ addressList.get(0).getAddressLine(1) + ", "
+ addressList.get(0).getAddressLine(2);
}
return true;
} catch (IOException e) {
e.printStackTrace();
return false; …Run Code Online (Sandbox Code Playgroud) 我目前有两种支持的语言:英语和西班牙语.因此main.strings,每种语言都有两个文件.一个在en.lproj一个在es.lproj.
我现在想要的是,main.strings如果用户的区域设置不是en或者es到达应用程序,则英语是默认文件,例如de或fr.
我知道我可以使用defaultString参数为代码中的每个字符串手动设置它:
NSLocalizedStringWithDefaultValue(key, @"main",[NSBundle mainBundle], defaultString, comment);
Run Code Online (Sandbox Code Playgroud)
但我宁愿不再在那里输入它(并且必须在两个地方更改它),而是将该en main.strings文件作为任何其他"不受支持"的语言环境的默认值.
iphone cocoa-touch localization objective-c internationalization
我想知道是否存在回调,类似于prepareForSegue,当用户使用[back]按钮返回到父UIViewController时会调用它.
我还想获取用户来自哪个子视图控制器的信息,这意味着用户按下后退按钮的视图控制器.
我正在玩一些键盘开发,并在按下某个键时尝试显示弹出对话框
if (primaryCode == -301) {
AlertDialog mDialog = new AlertDialog.Builder(CONTEXT)
.setTitle("My dialog")
.setMessage("Lets do it.")
.setPositiveButton("ok", null).create();
mDialog.show();
}
Run Code Online (Sandbox Code Playgroud)
然而,问题是这个CONTEXT部分.在正常的应用程序中它只是this.我也试过getApplicationContext()和getBaseContext(),但无论这些作品- >键盘崩溃.
android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序
所以我想知道我是否必须使用InputConnection做一些事情:
InputConnection接口是从InputMethod返回到接收其输入的应用程序的通信通道.它用于执行诸如读取光标周围的文本,将文本提交到文本框以及将原始键事件发送到应用程序之类的操作.
到目前为止,我无法弄清楚如何.我知道这是可能的,因为我以前见过它.我有人可以指出我正确的方向,肯定会受到赞赏.
更新:
为了更好地了解我尝试实现的目标,我上传了Swype键盘的屏幕截图,其完全相同:在键盘上按下特殊键时显示弹出对话框.

我想知道如何创建一个自定义弹出窗口,如下面的截图(从Swype键盘借用),我可以有几个按钮,每个按钮提交一个字符串到当前"连接" TextView(通过一个InputConnection).
请注意:这是一个InputMethodService而不是普通的Activity.我已经尝试启动一个单独Activity的Theme:Dialog.然而,一旦打开,我就会失去我的焦点TextView而且我的键盘消失了(而且我InputConnection的消失了).

为什么我有setSelectioninInputConnection而没有getSelection()?
我应该只做一个getTextBeforeCursor(VERY_HIGH_NUMBER, 0)并计算.length()那个字符串的吗?
我正在使用SoftKeyboard样本的修改版本,并且"有时" DeadObjectException在使用全屏模式时获得(例如,当orientation == landscape时).我仍然可以输入文本,但ExtractEditText不会更新,每当我点击一个新密钥时,我都会得到下面的logcat输出.
当我切换到肖像(没有全屏模式)时,我可以看到输入的字符.当我回到横向(全屏模式)时,ExtractEditText会更新字符.但是,当我尝试输入新字符时,问题会重复.
此外,当处于全屏模式并且我改变光标位置时,它确实改变了它,ExtractEditText但并没有真正改变我的位置InputConnection.我相信这个问题/错误已经存在于SoftKeyboard API示例中,因为我没有修改与此相关的任何内容,但是,到目前为止,我无法弄清楚在哪里.
也许有人可以指出我正确的方向?
13349 InputMethodManager W IME died: com.playground.keyboard/.MyInputMethod
13349 InputMethodManager W android.os.DeadObjectException
13349 InputMethodManager W at android.os.BinderProxy.transact(Native Method)
13349 InputMethodManager W at com.android.internal.view.IInputMethodSession$Stub$Proxy.updateSelection(IInputMethodSession.java:227)
13349 InputMethodManager W at android.view.inputmethod.InputMethodManager.updateSelection(InputMethodManager.java:1190)
13349 InputMethodManager W at android.widget.TextView.onDraw(TextView.java:4064)
13349 InputMethodManager W at android.view.View.draw(View.java:6591)
13349 InputMethodManager W at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
13349 InputMethodManager W at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
13349 InputMethodManager W at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
13349 InputMethodManager W at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
13349 InputMethodManager W at android.view.View.draw(View.java:6697)
13349 InputMethodManager …Run Code Online (Sandbox Code Playgroud) 如何禁用第 3 方库(例如 AdWhirl 和 AdMob)的 logcat 输出?
有时他们提供禁用日志输出的方法,有时他们不提供。对于那些没有应用程序范围的设置,我可以禁止某些类或标签的任何日志输出或日志输出吗?
我想知道是否可以开发一个应用程序,在其中我可以将主要内容显示在通过 HDMI 连接到 Android 的大屏幕上,并使用 Android 的触摸屏作为显示不同内容的控制器。
到目前为止,我看过的有关 Android HDMI 功能的视频仅将手机屏幕镜像到大屏幕。
android ×8
keyboard ×3
ime ×2
background ×1
cocoa-touch ×1
dialog ×1
exception ×1
geocoding ×1
hdmi ×1
ioexception ×1
ios ×1
iphone ×1
java ×1
localization ×1
logcat ×1
nexus-one ×1
objective-c ×1