我点击了我的清除按钮,它不起作用

时间:2014-01-25 03:11:09

标签: android onclick

感谢您的所有帮助!!我需要阅读补习班。 :)

我知道这可能是基本的,你可以说我是新手。我将我的代码与其他人进行了比较,并没有看到任何错误。谢谢!在输入数据后单击清除Button时,我的编辑字段不会被清除。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button clear = (Button)findViewById(R.id.btn_clear);
    clear.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v)
        {
            EditText potsize = (EditText) findViewById(R.id.et_pot_size);
            EditText tocall = (EditText) findViewById(R.id.et_to_call);
            EditText bepercent = (EditText) findViewById(R.id.et_be_per);
            potsize.setText("");
            tocall.setText("");
            bepercent.setText("");
            TextView potoddscalc = (TextView)findViewById(R.id.tv_pot_odds_calc);
            potoddscalc.setText("5");
        }
    });
}

XML:

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context=".MainActivity" >

     <requestFocus />

<TextView
    android:id="@+id/tv_be_per"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/tv_to_call"
    android:layout_below="@+id/tv_to_call"
    android:layout_marginTop="34dp"
    android:text="@string/BE_Per"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tv_to_call"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/tv_pot_size"
    android:layout_below="@+id/tv_pot_size"
    android:layout_marginTop="33dp"
    android:text="@string/to_call"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tv_pot_size"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="16dp"
    android:text="@string/pot_size"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tv_pot_odds_calc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/et_be_per"
    android:layout_alignTop="@+id/tv_pot_odds"
    android:ems="8" />

<EditText
    android:id="@+id/et_pot_size"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/tv_pot_size"
    android:layout_marginLeft="18dp"
    android:layout_toRightOf="@+id/tv_pot_odds"
    android:ems="10" />

<EditText
    android:id="@+id/et_to_call"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/et_pot_size"
    android:layout_alignTop="@+id/tv_to_call"
    android:ems="10" />

<EditText
    android:id="@+id/et_be_per"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/et_to_call"
    android:layout_alignTop="@+id/tv_be_per"
    android:ems="10" />

<TextView
    android:id="@+id/tv_pot_odds"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/tv_be_per"
    android:layout_below="@+id/et_be_per"
    android:layout_marginTop="20dp"
    android:text="@string/pot_odds"
    android:textStyle="bold" />

<Button
    android:id="@+id/btn_clear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/tv_pot_odds_calc"
    android:layout_below="@+id/tv_pot_odds_calc"
    android:layout_marginTop="24dp"
    android:text="@string/clear_button" />

<Button
    android:id="@+id/btn_calc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/btn_clear"
    android:layout_alignBottom="@+id/btn_clear"
    android:layout_alignLeft="@+id/tv_pot_odds_calc"
    android:text="@string/calc_button" />

3 个答案:

答案 0 :(得分:1)

试试这个。我相信每次点击清除按钮时,您可能会因创建新的EditTextsTextView对象而产生问题。在下面的代码中,EditTextsTextView仅在OnCreate方法中声明一次。此外,getText().clear()是从EditText清除文本的“官方”方式(并不是它确实会产生视觉差异)。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button clear = (Button)findViewById(R.id.btn_clear);
EditText potsize = (EditText) findViewById(R.id.et_pot_size);
EditText tocall = (EditText) findViewById(R.id.et_to_call);
EditText bepercent = (EditText) findViewById(R.id.et_be_per);
TextView potoddscalc = (TextView)findViewById(R.id.tv_pot_odds_calc);
clear.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v)
    {
        potsize.getText().clear();
        tocall.getText().clear();
        bepercent.getText().clear();
        potoddscalc.setText("5");
    }
});

}

答案 1 :(得分:0)

// try this way
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">
        <TextView
            android:id="@+id/tv_pot_size"
            android:layout_width="0dp"
            android:layout_weight="0.20"
            android:gravity="right"
            android:layout_height="wrap_content"
            android:text="pot_size"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/et_pot_size"
            android:layout_width="0dp"
            android:layout_weight="0.80"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:ems="10" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">
        <TextView
            android:id="@+id/tv_to_call"
            android:layout_width="0dp"
            android:layout_weight="0.20"
            android:gravity="right"
            android:layout_height="wrap_content"
            android:text="to_call"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/et_to_call"
            android:layout_width="0dp"
            android:layout_weight="0.80"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:ems="10" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">
        <TextView
            android:id="@+id/tv_be_per"
            android:layout_width="0dp"
            android:layout_weight="0.20"
            android:gravity="right"
            android:layout_height="wrap_content"
            android:text="BE_Per"
            android:textStyle="bold" />


        <EditText
            android:id="@+id/et_be_per"
            android:layout_width="0dp"
            android:layout_weight="0.80"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:ems="10" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_marginTop="10dp">


        <TextView
            android:id="@+id/tv_pot_odds"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="pot_odds"
            android:textStyle="bold" />


        <TextView
            android:id="@+id/tv_pot_odds_calc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:ems="8" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="center">

        <Button
            android:id="@+id/btn_calc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="calc_button" />

        <Button
            android:id="@+id/btn_clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="clear_button" />

    </LinearLayout>

</LinearLayout>


public class MyActivity extends Activity {

    private EditText potsize;
    private EditText tocall;
    private EditText bepercent;
    private Button clear;
    private Button calc;
    private TextView potoddscalc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        clear = (Button)findViewById(R.id.btn_clear);
        calc = (Button)findViewById(R.id.btn_calc);
        potsize = (EditText) findViewById(R.id.et_pot_size);
        tocall = (EditText) findViewById(R.id.et_to_call);
        bepercent = (EditText) findViewById(R.id.et_be_per);
        potoddscalc = (TextView)findViewById(R.id.tv_pot_odds_calc);
        clear.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                clearOrReset();
            }
        });
    }

    private void clearOrReset(){
        potsize.setText("");
        tocall.setText("");
        bepercent.setText("");
        potoddscalc.setText("5");
    }
}

答案 2 :(得分:0)

在oncreate方法中声明Edittext的所有三个对象然后尝试

enter code here @Override 
                protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
                  Button clear = (Button)findViewById(R.id.btn_clear);
                   EditText potsize = (EditText) findViewById(R.id.et_pot_size);
                     EditText tocall = (EditText) findViewById(R.id.et_to_call);
                    EditText bepercent = (EditText) findViewById(R.id.et_be_per);
                 TextView potoddscalc = (TextView)findViewById(R.id.tv_pot_odds_calc);
                      public void onClick(View v)
    {
      swiech(v.getid())
  {
     case R.id.btn_clear:
        potsize.setText("");
        tocall.setText("");
        bepercent.setText("");

        potoddscalc.setText("5");
    }
});

}