Android:如何重新开始活动
我正尝试在我的应用程序中重新启动活动,但我遇到了一些问题。Android:如何重新开始活动
当我使用recreate();
时,活动不会完全重新启动,EditTexts不会变空。
我也试过这个代码:
Intent myIntent = getIntent();
myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(myIntent);
但是:
在开始时,我的活动有一个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);
}
}
});
但活动开始时,它没有工作,所以我不得不添加android:windowSoftInputMode="stateVisible"
在AndroidManifest.xml中。
问题是:第二个代码(用于重新启动活动)忽略此操作,并且不要在开始时打开键盘。
如何以编程方式在Activity Start中打开键盘?或者我怎样才能使用recreate();
完全重新开始一项活动?
对不起,英文不好,我希望你能理解。
Try this:
Intent intent = getIntent();
finish();
startActivity(intent);
我试过了。看看原帖中的第二个代码。 –
这个怎么样?:
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
这只是关闭活动。 –
它的工作在我的应用程序btw ...有趣的... – Mohsen
我不知道。我现在正在测试这个代码,它只是关闭了活动。也许是因为按钮在DialogAlert中? –
可调焦添加到您的EditText并调用requestFocus()方法时,你需要显示的键盘。
我猜EditText默认是可以调整的。无论如何,我添加'focusable' /'focusableInTouchMode'并将'requestFocus()'放在'onResume'中,但什么也没有。键盘不显示。 –
recreate()和call finish()。对于更老的apis(我猜可能是更低的13(?))startActivity(新的Intent(this,getIntent())和call finish();然后你可以将一个bundle放到intent中,然后在onCreate中接收它并使用它来更新/设置你的用户界面 –
尝试里面oncreate - (getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);)从这里 - http://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically – Tasos
尝试在onResume –