2012-04-23 28 views
3

私はタブホストを持っており、タブごとに私はアクティビティグループを持っています。tabhostのあるAndroidアクティビティグループ、キーボードが表示されない

アプリが起動し、編集テキストを押すとキーボードが表示されます。 子アクティビティを開始した後、メインアクティビティに戻ると、キーボードはもう消えません。

activitygroupにおける主な活動

ActivityGroupMeal.group.back(); 

とバックコードに戻ってsubactivityに

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); 

私のコードを起動するための私のコード:

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)); 
     } 
    } 

I editTextonClickListenerを次のコードで設定してください:

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を返し、子アクティビティから戻ってきたときは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

+0

わかりません。この[ActivityGroup](http://ericharlow.blogspot.in/2010/09/experience-multiple-android-activities.html)を一度お試しください。 – Praveenkumar

+0

@ k9tyあなたはこの問題の解決策を見つけましたか? – duggu

答えて

1

それが解決しない場合はあなたが自分のアプリケーションどこでrequestFocus()

+0

今日これを試して、それが動作するかどうかをお知らせします。 THanks – kushaldsouza

+0

これは私にとってはうまくいかないようです。 – kushaldsouza

4

を呼び出すことによって、あなたのback()方法に焦点を要求、すなわち

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

EditTextの定義にrequestFocus />要素を追加してみて使用されたアクティビティグループ、私は同じ問題を解決するために以下のコードを使用しました

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

+0

アンドロイドを追加:windowSoftInputMode = "stateVisible | adjustResize" –

+0

@PankajKumarは同じ問題に直面し、あなたのコードは何も起こらなかった???問題を解決する方法はありますか? – duggu

関連する問題