所以我的应用程序中有一个按钮和一个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) 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)