0

私はJavaとAndroidを初めて使用するので、簡単な質問をする場合はご容赦ください。2つのEditTextでユーザー入力を必要とするアプリケーションがあります。これらの入力は乗算され、結果はTextViewに表示されます。ユーザーエントリの内容と表示された結果をクリアする「エントリのクリア」ボタンを使用したいと思います。それを行う方法はありますか?

これがアプリケーションコードです。

package c.example.rectangle;

import android.os.Bundle;

import android.view.View;
import android.app.Activity;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class MainActivity extends Activity implements OnClickListener{

    EditText l;
     EditText w;
     TextView a;
     Button b;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  

        l = (EditText) findViewById(R.id.length);
        w = (EditText) findViewById(R.id.width);
        a = (TextView) findViewById(R.id.lblarea);
        b = (Button) findViewById(R.id.calculate);

        b.setOnClickListener(this);

    }

    public void onClick(View v) {
        calculateRectangle(l.getText().toString(), w.getText().toString());


    }
    private void calculateRectangle(String clength, String cwidth){


        double area = Double.parseDouble(clength)*Double.parseDouble(cwidth);

        a.setText(String.valueOf(area)); 
}}

そして、これが私のXMLコードです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#8B4513"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/label1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:background="#2F4F4F"
        android:gravity="center"
        android:text="@string/rect"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/label2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="50dp"
            android:background="#2F4F4F"
            android:gravity="center"
            android:text="@string/cm"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/length"
            android:layout_width="110dp"
            android:layout_height="21dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="50dp"
            android:background="#2F4F4F"
            android:ems="10"
            android:gravity="center"
            android:hint="@string/help"
            android:inputType="text" />


    </LinearLayout>

 <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

    <TextView
        android:id="@+id/label3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#2F4F4F"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="20dp"
        android:text="@string/breadth"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/width"
        android:layout_width="110dp"
        android:layout_height="21dp"
        android:layout_marginLeft="33dp"
        android:layout_marginTop="20dp"   
        android:background="#2F4F4F"
        android:inputType="text"
        android:hint="@string/help"

        android:ems="10" 
        android:gravity="center"
        >

        <requestFocus />
    </EditText>

</LinearLayout>

 <Button
     android:id="@+id/calculate"
     android:layout_width="fill_parent"
     android:layout_marginLeft="100dip"
     android:layout_marginRight="100dip"
     android:layout_height="wrap_content"
     android:text="@string/calculate"
     android:layout_marginTop="20dp" />

 <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

 <TextView
     android:id="@+id/label4"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="30dp"
     android:layout_marginTop="20dp"
     android:background="#2F4F4F"
     android:text="@string/area"
     android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
     android:id="@+id/lblarea"
     android:layout_width="110dp"
     android:layout_height="21dp"
     android:layout_marginLeft="60dp"
     android:layout_marginTop="20dp"
     android:background="#2F4F4F"
     android:gravity="center"/>
 </LinearLayout>

 <Button
     android:id="@+id/clear"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_marginLeft="100dip"
     android:layout_marginRight="100dip"
     android:layout_marginTop="20dp"
     android:text="@string/clear" />

</LinearLayout>

答えていただければ幸いです。

4

4 に答える 4

0

本当に便利なandroid:onClickを誰も使用していないように見えるのはなぜですか?

<Button
    ...
    android:text="@string/calculate"
    android:onClick="calculate" />
<Button
    ...
    android:text="@string/clear"
    android:onClick="clearForm" />

次のアクティビティで:

class MyActivity extends Activity
{
    ...
    /**
     * Calculate
     * android:onClick="calculate"
     */
    public void calculate(View view)
    {
        // Handle click on your 'Calculate' button
    }

    /**
     * Clear form
     * android:onClick="clearForm"
     */
    public void clearForm(View view)
    {
        int[] ids = new int[]{R.id.length, R.id.width};
        for(int id : ids)
        {
            ((EditText) this.findViewById(id).)setText("");
        }
    }
}

このように、ID を気にする必要はなく、コードはよりクリーンになります。

ID を使いすぎないでください。それらは、ユーザーがそれらの変更を処理する (そして onSaveInstanceState() の自然な動作を楽しむ) ために「変更」できるビューでは優れていますが、それだけです!

IMO。

于 2013-02-07T11:05:42.667 に答える
0

それらのデータを表示する必要がなくなったときに、両方の editTexts を空に設定してみませんか?

EditText.setText("");

TextView でも同じです。

TextView.setText("");
于 2013-02-06T23:53:52.617 に答える
0

クリア ボタンを作成する場合は、次の操作を行います。

xml にボタンを作成します。

<Button
     android:id="@+id/clear_button"
     ... you own layout prefs ...
/>

コードでボタンのリスナーを作成します。

OnClickListener clearButtonListener = new OnClickListener(){
  @Override
  public void onClick(View view) {          
    ((EditText)findViewById(R.id.id_for_text_box_a)).setText("");
    //...do this for all your edit texts that you want to clear         
  }
};

リスナーをボタンに接続する

Button clearButton = (Button) findViewById(R.id.clear_button);
clearButton.setOnClickListener(clearButtonListener);

あるいは、リスナーで id によって編集テキストを見つける代わりに、編集テキストをonCreateどこかで初期化されるインスタンス変数にすることもできます。また、1 文字の変数名を使用しないことをお勧めします。

個人的には、XMLOnClickListenerの属性の代わりに sを設定します。onClickXMLonClick属性を使用すると、コードの行数が少なくなる可能性がありますが、残念ながら、レイアウトと機能が非常に緊密に結合されます。レイアウトには XML を、機能には Java を使用することを好みます。さらに、s の使用を強制されるidと、XML 要素に変数名が必要になるため、レイアウト コードが読みやすくなります (このボタンは何ですか? このチェックボックスは何のためのものですか?)。この属性の使用に関して私が目にするもう 1 つの問題onClickは、呼び出されたメソッドが強制的に public になることです。これは、これらのメソッドの多くにとって実際には意味がありません。私は、Java を読むことによってアクティビティが機能的に何をするかを理解することを好みます。また、参照されていないパブリック メソッドが自分のアクティビティに浮かんでいるのは避けたいと思っています。

于 2013-02-06T23:57:41.113 に答える
0

それらを繰り返し処理したい場合は、それらをリストに入れてから、for ループを使用してテキストを "" に設定できます。

List<EditText> myList = new List<EditText>();
myList.add(editText1);

次に、明確な方法で

for (int x = 0; x < myList.size(); x++

{   
myList.get(x).setText("");
}
于 2013-02-07T00:01:42.057 に答える