2012-04-18 5 views
0

構成変更が発生したときに単にトーストメッセージを中継するテストアプリケーションを構築しようとしました。 (うまくやっていると思うが、うまくいかない)最終的な目的は、タブレットをキーボードクレードルに置いたり、キーボードクレードルから取り出したりすることを検出することです。私のマニフェストと主な活動は以下の通りです。私はこのコードがタブレットにuiModeや外付けキーボードの設定変更があったときに乾杯になると思っていましたが、ドッキング/ドッキング解除しても何も起こっていません...uiModeまたはKeyboardの変更を検出しました。

私のマニフェスト:

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk android:minSdkVersion="12" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".UiModeTestActivity" 
     android:configChanges="keyboard|uiMode" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

私のjava:

package com.eliddell; 

import android.app.Activity; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.widget.Toast; 

public class UiModeTestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     Toast.makeText(getApplicationContext(), "new config:"+newConfig, Toast.LENGTH_LONG).show(); 
    } 
} 

答えて

0

あなたのコードソースが言うように

を正常に見えるが...:

/** 
* The kind of keyboard attached to the device. 
* One of: {@link #KEYBOARD_NOKEYS}, {@link #KEYBOARD_QWERTY}, 
* {@link #KEYBOARD_12KEY}. 
*/ 
public int keyboard; 

だから、私はKEYBOARD_12KEY

源の別の部分にKEYBOARD_QWERTY変更が言えば、キーボードは変わると思い:

/** 
    * A flag indicating whether any keyboard is available. Unlike 
    * {@link #hardKeyboardHidden}, this also takes into account a soft 
    * keyboard, so if the hard keyboard is hidden but there is soft 
    * keyboard available, it will be set to NO. Value is one of: 
    * {@link #KEYBOARDHIDDEN_NO}, {@link #KEYBOARDHIDDEN_YES}. 
    */ 
    public int keyboardHidden; 

だから、android:configChanges="keyboard|uiMode"の代わりにandroid:configChanges="keyboardHidden|uiMode"

残念ながら私のデバイスにキーボードを接続して私の理論をチェックするアダプターはありません。だからそれを試してください!

関連する問題