在Android上禁用软键盘不起作用。用于检测

时间:2012-06-13 00:53:13

标签: java android android-softkeyboard

我尝试了多种方法来禁用我的测试中的软键盘,但是没有用。

  1. 添加到我的androidmanifest.xml

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

    活动是应用程序文件夹的名称(不是我的测试脚本)

  2. 添加到我的androidmanifest.xml

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

    /&GT;

  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); 
    
  5. 但是getSystemService给了我一个错误。 (在我班上未定义) 我不确定如何使用这两个命令

    我正在使用2.3和三星展览II。

    现在我正在使用:

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

    感谢。

1 个答案:

答案 0 :(得分:0)

getSystemService()是Context的一种方法,所以当你尝试调用它时所在的类不是Context(活动扩展,因此是一个上下文)然后你需要在方法前放一个引用和一个点。您需要如何做到这一点取决于您尝试将这两行放入哪种类型的结构。如果你仍然在一个Activity中,但是目前在一个内部类中,你可以通过这样做来修复它:

YourActivityName.this.getSystemService();

如果你在其他类中,那么你需要有一种方法将Context传递给它,这样你就可以在传递给你的Context对象上调用该方法(即作为构造函数参数)。

修改:

我想,您可能希望将此代码放在WelcomeActivityI中,而不是在此测试对象内部。我根据你发布的内容一直无法判断,但是如果你从那段代码中做到这一点,我的猜测就是launcherActivityClass将参与获得背景。你把它膨胀成一个Activity对象吗?如果是这样的话,你可以将它作为一个上下文传递而不做任何事情。