我试图在我的应用中重新启动一个活动,但我遇到了一些问题。
当我使用recreate();
时,活动没有完全重启,EditTexts不会变空。
我也试过这段代码:
Intent myIntent = getIntent();
myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(myIntent);
BUT:
一开始,我的Activity有一个EditText,它会自动对焦。我在使用此代码时在焦点时打开键盘,在失去焦点时关闭:
txtNumber.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (hasFocus) {
imm.showSoftInput(txtNumber, InputMethodManager.SHOW_IMPLICIT);
} else {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
});
但是当Activity启动时它不起作用,所以我不得不将android:windowSoftInputMode="stateVisible"
添加到AndroidManifest.xml。
问题在于:第二个代码(用于重启活动)忽略了这一点,并且在开始时不要打开键盘。
如何以编程方式在“活动开始”中打开键盘?或者如何使用recreate();
完全重新启动活动?
抱歉英语不好,希望你能理解。
答案 0 :(得分:2)
Try this:
Intent intent = getIntent();
finish();
startActivity(intent);
答案 1 :(得分:0)
将焦点添加到EditText并在需要显示键盘时调用requestFocus()。
答案 2 :(得分:-1)
这个怎么样?:
map.events.register("click", map, function(e) {
var position = map.getLonLatFromPixel(e.xy);
position.transform(map.getProjectionObject(), new OpenLayers.Projection('EPSG:4326'));
alert(JSON.stringify(position));
});