0

テストからソフトキーボードを無効にする複数の方法を試しましたが、機能しません。

  1. 私のandroidmanifest.xmlに追加されました

     <activity android:name="com.photos.ui.activity.WelcomeActivity"
      android:windowSoftInputMode="stateHidden"
      />
    

    アクティビティはアプリのフォルダーの名前です(私のテストスクリプトではありません)

  2. 私のandroidmanifest.xmlに追加されました

    <LinearLayout 
    android:focusable="true"
    android:focusableInTouchMode="true"
    

    />

  3. これを私のテストとセットアップに配置しました

    EditText edtView=solo.getEditText(0);   
    edtView.setInputType(InputType.TYPE_NULL);
    
  4. 試した

     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
     imm.hideSoftInputFromWindow(solo.getEditText(0).getWindowToken(),0); 
    

しかし、getSystemServiceは私にエラーを与えています。(私のクラスでは未定義)これら2つのコマンドの使用方法がわかりません

そして私はサムスンの展示IIで2.3を使用しています。

現在使用しているもの:

    hnm, what calls would I need to create the context object? right now im using:    private Context context;

private static Class<?> launcherActivityClass;
static{
        try {
                launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
        } catch (ClassNotFoundException e) {
                throw new RuntimeException(e);
        }
}

public TestMain() throws ClassNotFoundException {
    super(TARGET_PACKAGE_ID, launcherActivityClass);
}

public TestMain(String name) throws ClassNotFoundException {
    super(TARGET_PACKAGE_ID, launcherActivityClass);
    setName(name);
}

public TestMain(String name, Class<?> className) throws ClassNotFoundException {
    super(TARGET_PACKAGE_ID, className);
    setName(name);

}


private Solo solo;

 @Override  
protected void setUp() throws Exception {


        solo = new Solo(getInstrumentation(), getActivity());

    Log.v("setup","setup");



}

@Override
protected void tearDown() throws Exception {

        solo.finishOpenedActivities();
}   

ありがとう。

4

1 に答える 1

0

getSystemService() はのメソッドであるContextため、呼び出しようとしているときに内部にいるクラスがContext(アクティビティが拡張されコンテキストである) でない場合は、参照とドットを前に置く必要があります。メソッドの。それをどのように行う必要があるかは、これらの 2 行を配置しようとしている構造のタイプによって異なります。まだアクティビティ内にいるが、現在内部クラスにいる場合は、次のようにして修正できます。

YourActivityName.this.getSystemService();

他のクラスの内部にいる場合は、コンテキストを渡す方法が必要です。これにより、渡された Context オブジェクトでメソッドを呼び出すことができます (つまり、コンストラクターのパラメーターとして)。

編集:

このコードは、このテスト オブジェクト内ではなく、WelcomeActivity 内に配置する必要があると思います。あなたが投稿した内容に基づいて、あなたが何をしようとしているのかはわかりませんが、そのコードのチャンクからそれを行うことに夢中になっている場合 launcherActivityClass、コンテキストの取得に関与することになると思います. これをActivityオブジェクトに膨らませていますか? その場合、何もせずにコンテキストとして渡すことができます。

于 2012-06-13T01:27:06.020 に答える