相关疑难解决方法(0)

我必须单击两次按钮才能工作

所以我的应用程序中有一个按钮和一个edittext.当我单击按钮并在edittext中写入内容时,textview会发生变化.除了一件事,它一切正常.我必须单击按钮两次才能使其工作(仅在我第一次打开活动时).我打开活动后的第一次按下按钮,没有任何反应,之后它按预期工作.

我已经对此进行了研究,据我所知,导致问题的是焦点,但我尝试了一些事情,没有任何效果.

按钮XML代码:

<Button
    android:id="@+id/submitButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/editText1"
    android:layout_alignBottom="@+id/editText1"
    android:layout_alignLeft="@+id/checkBox25"
    android:text="@string/addMaterial"
    android:onClick="submitQuantityButton" >
</Button>
Run Code Online (Sandbox Code Playgroud)

Edittext XML代码:

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/spinner1"
    android:ems="3"
    android:inputType="number"
    android:maxLength="3" >
</EditText>
Run Code Online (Sandbox Code Playgroud)

我尝试将android:focusableInTouchMode ="false"添加到按钮XML,我也尝试将requestFocus添加到按钮XML,但它仍然不起作用.我还从edittext中删除了requestFocus,但它不起作用.我的想法还没有尝试.

onClick方法:

public void submitQuantityButton (View v){
    Button submitButton = (Button)findViewById(R.id.submitButton);
    final Spinner sItems = (Spinner)findViewById(R.id.spinner1);
    final Context context = this;
    final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
    final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
    final CheckBox cb33 = (CheckBox) findViewById(R.id.checkBox33);
    final CheckBox cb30 = (CheckBox) findViewById(R.id.checkBox30);
    final CheckBox cb6 = (CheckBox) findViewById(R.id.checkBox6);
    final …
Run Code Online (Sandbox Code Playgroud)

java eclipse android focus button

29
推荐指数
2
解决办法
3万
查看次数

Android按钮 - 如何将focusable设置为true并在第一次单击时仍接受onClick侦听器?

UPDATE

我已经通过从按钮样式中删除两个可聚焦线并使用onClick事件处理程序来调用来解决点击问题 requestFocusFromTouch();

不幸的是,我遇到了一个问题,即requestFocusFromTouch()聚焦了错误的按钮.它总是聚焦第一个按钮而不是我调用方法的按钮.这是一个安卓漏洞或预期的行为,我可以做些什么来解决这个问题?

对于onClick事件,代码现在看起来像这样

public void onClick(View v) {
    switch (v.getId()) {
            case R.id.btn_home:
                Intent i = new Intent(this, QuizMenu.class);
                startActivity(i);
                v.requestFocusFromTouch();
            break;
            case R.id.btn_support:
                Intent i1 = new Intent(this, Support.class);
                startActivity(i1);
                v.requestFocusFromTouch();
                View btnSupport = findViewById(R.id.btn_support);
                btnSupport.setSelected(true);
                btnSupport.requestFocusFromTouch();
            break;
            // More buttons go here (if any) ...
    }
}
Run Code Online (Sandbox Code Playgroud)

更新结束

我有一个具有以下风格的android按钮

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MnuBtnStyle">
        <item name="android:ellipsize">marquee</item>
        <item name="android:scrollHorizontally">true</item>
        <item name="android:focusable">true</item>
        <item name="android:focusableInTouchMode">true</item>
        <item name="android:singleLine">true</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_marginTop">1dip</item> 
        <item name="android:layout_marginBottom">1dip</item>
        <item name="android:textSize">10dp</item>
        <item …
Run Code Online (Sandbox Code Playgroud)

android

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×2

button ×1

eclipse ×1

focus ×1

java ×1