2016-01-20 89 views
1

我正嘗試在我的應用程序中重新啓動活動,但我遇到了一些問題。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 –

回答

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

我試過了。看看原帖中的第二個代碼。 –

-1

這個怎麼樣?:

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

這只是關閉活動。 –

+0

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

+0

我不知道。我現在正在測試這個代碼,它只是關閉了活動。也許是因爲按鈕在DialogAlert中? –

0

可調焦添加到您的EditText並調用requestFocus()方法時,你需要顯示的鍵盤。

+0

我猜EditText默認是可以調整的。無論如何,我添加'focusable' /'focusableInTouchMode'並將'requestFocus()'放在'onResume'中,但什麼也沒有。鍵盤不顯示。 –