2012-06-13 2 views
0

필자는 테스트에서 softkeyboard를 비활성화하는 데 여러 가지 방법을 시도했지만 작동하지 않습니다. android가 작동하지 않는 상태에서 소프트 키보드를 사용 중지합니다. 테스트를 위해

  1. 는 활동이
  2. 내 AndroidManifest.xml에 추가 된 응용 프로그램에 대한 폴더의 이름 (내 테스트 스크립트) 내 AndroidManifest.xml을

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

    에 추가

    <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 나에게 오류를주고 내 테스트에 내 설정이 배치. (내 수업에서 정의되지 않음) 나는이 두 명령을 사용하는 방법을 잘 모르겠다.

나는 삼성 전자 전시회 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(); 
} 

감사합니다. 당신은 당신이 전화를하려고 할 때 내부에있는 클래스가 아닌 그렇다면

답변

0

getSystemService()는 Context하는 방법입니다 Context (활동 확장, 따라서 상황은) 다음에해야합니다 메소드 앞에 점과 참조를 놓습니다. 어떻게해야 하는가? 두 줄을 넣으려는 구조의 유형에 달려 있습니다. 당신이 활동 안에 여전히하지만 내부 클래스에 현재있는 경우는 다음과 같이 수행하여 문제를 해결할 수 있습니다

YourActivityName.this.getSystemService(); 

당신이 다른 클래스 안에있는 경우에 당신이 통과 할 수있는 방법이 있어야합니다 당신에게 전달 된 Context 객체에 대한 메소드를 호출 할 수 있도록 (즉, 생성자 매개 변수로서) 컨텍스트를 지정하십시오.

편집 :

내 생각, 당신은 WelcomeActivityI이없는이 테스트 객체의 내부, 생각 안에이 코드를 넣어해야 할 것입니다. 나는 당신이 무엇을하고 싶은지를 기반으로 말할 수는 없지만, 코드의 덩어리에서 그렇게한다면, launcherActivityClass은 컨텍스트를 얻는데 관여 할 것입니다. 이것을 액티비티 객체로 팽창 시켰습니까? 그렇다면 아무 것도하지 않고 컨텍스트로 전달할 수 있습니다.

+0

hnm, 컨텍스트 개체를 작성하는 데 필요한 호출은 무엇입니까? 지금 당장 사용하고 있습니다 : –

+0

코멘트에 코드를 게시하지 마시고 질문을 편집하십시오 – FoamyGuy

+0

죄송합니다! 편집을 완료했습니다. –

관련 문제