【问题标题】:Android: Start activity when EditText is clickedAndroid:单击 EditText 时启动活动
【发布时间】:2011-04-24 14:23:10
【问题描述】:

当用户在 Facebook 搜索和 Google 搜索小部件中触摸 EditText 时,我如何启动新活动?

设置setOnClickListener 仅在第一次单击后有效。第一次单击时,EditText 会突出显示,并弹出键盘。在第二次单击时,它会打开新活动。 我不想要这个,而是我想在第一次点击时打开活动。我该怎么做?

【问题讨论】:

  • 您单击的框是否必须是编辑文本?它可能只是一个看起来像编辑文本的图像,因为无论如何都不会有人输入它。
  • Google 搜索应用小部件没有 EditText。应用小部件中不能有 EditText。正如@chustar 建议的那样,如果不让用户编辑文本,拥有EditText 是荒谬的。

标签: android android-activity android-edittext


【解决方案1】:

您需要在触摸模式下禁用 EditText 的焦点,这将使 onclick 在第一次点击时执行:

<EditText ...
      android:focusableInTouchMode="false" 
      android:editable="false"
/>

【讨论】:

  • 非常感谢,它节省了我的时间,我为此做了很多研发:)
【解决方案2】:

设置EditText的输入类型为InputType.TYPE_NULL:

editText.setInputType(InputType.TYPE_NULL);

,在接收用户交互时隐藏软键盘。开始活动:

public void onEditTextClick(View arg0) 
{
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    startActivity(intent);
}

当然onEditTextClick方法必须注册到EditText对象:)

【讨论】:

    【解决方案3】:

    请试试这个

    <EditText
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:onClick="search"/>
    

    public void search(View view) 
    {
        EditText text = (EditText)view;
    
        if(text.length() == 0)
            return;
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
    }
    

    【讨论】:

    • 这与从代码中设置setOnClickListener 相同。它不起作用。
    • 嗨,我可以确切地知道您要加载新活动的字符数。我从 EditText 中删除了 inputType。所以试试吧。如果您知道字符的编号,则将 0 替换为该 no-1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多