2012-04-23 64 views
3

我有一個tabhost和每個標籤我有一個activitygroup。android activitygroup與tabhost,鍵盤不顯示

當應用程序啓動時,我按下editText鍵盤出來。 當我開始一個孩子的活動,然後回到主要活動的鍵盤不會出來了。

我對開始的子活動

Intent i = new Intent(this, ShowAddFoodToSelection.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

View view = ActivityGroupMeal.group.getLocalActivityManager().startActivity(DataParser.activityIDMeal, i).getDecorView(); 

ActivityGroupMeal.group.setContentView(view); 

我的代碼返回到主活動

ActivityGroupMeal.group.back(); 

和背碼在的ActivityGroup代碼:

public void back() { 
     try { 
      // if we set history.size() > 0 and we press back key on home 
      // activity 
      // and then on another activity we wont get back! 
      if (history.size() > 1) { 
       history.remove(history.size() - 1); 
       // call the super.setContent view! so set the real view 
       super.setContentView(history.get(history.size() - 1)); 
      } else { 

      } 
     } catch (Exception e) { 
      if (history.size() >= 0) 
       super.setContentView(history.get(0)); 
     } 
    } 

我在editText上設置onClickListener,代碼如下:

private void keyboardShow() { 
     InputMethodManager inputManager = (InputMethodManager) ActivityGroupMeal.group.getSystemService(Context.INPUT_METHOD_SERVICE); 

     boolean test = inputManager.showSoftInput(editTextSearch, InputMethodManager.SHOW_IMPLICIT); 

     Toast.makeText(this, "show keyboard " + test, Toast.LENGTH_SHORT).show(); 
    } 

第一次它返回true並且我從一個childactivity回來的時候它返回false。

當我點擊另一個選項卡,然後回到第一個選項卡上,然後單擊editText時,它會再次返回true。

編輯:我有一個臨時的解決辦法,我在editTextbox設置onClicklistener再有我顯示鍵盤與代碼

InputMethodManager inputManager = (InputMethodManager) ActivityGroupMeal.group 
       .getSystemService(Context.INPUT_METHOD_SERVICE); 

     // show keyboard , when it fails first switch tab and then try again 
     if (!inputManager.showSoftInput(null, InputMethodManager.SHOW_FORCED)) { 
      // switch from tab and back 
      // the keyboard wont show if we dont do this 
      ShowHomeTab parentActivity; 
      parentActivity = (ShowHomeTab) this.getParent().getParent(); 
      parentActivity.goToTab(DataParser.activityIDTracking); 
      parentActivity.goToTab(DataParser.activityIDShowFoodList); 

      inputManager.showSoftInput(null, InputMethodManager.SHOW_FORCED); 
     } 

當我從childactivity回我首先要轉換的代碼標籤之前鍵盤將顯示=/

任何人都得到了解釋呢?

+0

我正面臨類似的問題,你碰巧找到了解決辦法嗎?請讓我知道。 – kushaldsouza 2012-06-11 22:14:50

+0

我不確定。嘗試一次[ActivityGroup](http://ericharlow.blogspot.in/2010/09/experience-multiple-android-activities.html)。 – Praveenkumar 2012-06-13 07:33:11

+0

@ k9ty是你發現這個問題的任何解決方案????? – duggu 2013-12-12 07:08:44

回答

1

您可以嘗試添加requestFocus />元素的EditText的定義,即

<EditText android:id="@+id/edit_text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:inputType="text" > 
     <requestFocus /> 
</EditText> 

如果它不能幫助你back()方法,要求重點致電requestFocus()

+0

今天會試試這個,並告訴你它是否有效。 THanks – kushaldsouza 2012-06-14 18:27:08

+0

這似乎不適用於我。 – kushaldsouza 2012-06-17 13:53:13

4

在我的應用程序,我我使用下面的代碼來解決同一問題

YOUR_EDIT_TEXT.setOnEditorActionListener(new OnEditorActionListener() { 

      public boolean onEditorAction(TextView v, int actionId, 
        KeyEvent event) { 
       if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
        InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
        in.hideSoftInputFromWindow(searchName 
          .getApplicationWindowToken(), 
          InputMethodManager.HIDE_NOT_ALWAYS); 
       } 
       return false; 
      } 
     }); 

它是我很好。所以試試這個代碼片段。

+0

試過了。我的設備上顯示的鍵盤具有Android 4.0.4固件,但仍舊不顯示在具有較舊固件版本(2.3及更低版本)的設備上。 – kushaldsouza 2012-06-17 13:54:41

+0

將android:windowSoftInputMode =「stateVisible | adjustResize」添加到清單中的活動並進行檢查。 – 2012-06-18 05:59:02

+0

@PankajKumar面臨同樣的問題,並使用你的代碼什麼都沒有發生?有沒有辦法解決這個問題? – duggu 2013-12-12 06:12:33