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();完全重新开始一项活动?

对不起,英文不好,我希望你能理解。

+1

recreate()和call finish()。对于更老的apis(我猜可能是更低的13(?))startActivity(新的Intent(this,getIntent())和call finish();然后你可以将一个bundle放到intent中,然后在onCreate中接收它并使用它来更新/设置你的用户界面 –

+0

尝试里面oncreate - (getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);)从这里 - http://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically – Tasos

+0

尝试在onResume –

Try this: 
Intent intent = getIntent(); 
finish(); 
startActivity(intent); 
+0

我试过了。看看原帖中的第二个代码。 –

这个怎么样?:

Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
+0

这只是关闭活动。 –

+0

它的工作在我的应用程序btw ...有趣的... – Mohsen

+0

我不知道。我现在正在测试这个代码,它只是关闭了活动。也许是因为按钮在DialogAlert中? –

可调焦添加到您的EditText并调用requestFocus()方法时,你需要显示的键盘。

+0

我猜EditText默认是可以调整的。无论如何,我添加'focusable' /'focusableInTouchMode'并将'requestFocus()'放在'onResume'中,但什么也没有。键盘不显示。 –