0

私はAndroidプログラミングが初めてなので、質問がばかげているように見える場合はご容赦ください。

私はAndroidで電卓を作成しています。ユーザーインターフェイスには多くのボタンがあります(10桁で約20個、さまざまな操作)。これで、ユーザーがボタン「=」を押すと計算される文字列式ができました。ただし、他のボタンを押すと、入力が更新されます。彼が「1」を押してから =1 を入力するとします。次に 2 を押すと、入力は「12」になります。そのため、さまざまなボタンが押されるたびに同じ関数を呼び出す必要がありますが、関数への入力は異なります。各ボタンに 1 つずつ、n 個の異なる機能を作成することでこれを行うことができますが、これはあまりスケーラブルではありません。では、どうすればそれについて行くことができますか?

現在のxmlファイルは次のとおりです。

<Button
    android:id="@+id/Button01"
    android:layout_width="70dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/Button03"
    android:layout_alignBottom="@+id/Button03"
    android:layout_toRightOf="@+id/Button03"
    android:onClick="UpdateExpression_/"
    android:text="/" />

<Button
    android:id="@+id/Button02"
    android:layout_width="70dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/Button01"
    android:layout_alignBottom="@+id/Button01"
    android:layout_toRightOf="@+id/Button01"
    android:onClick="UpdateExpression_X"
    android:text="x" />

android:onClick="UpdateExpression" に更新し、この関数呼び出しへの入力について言及する必要があります。

ありがとうございました。

4

2 に答える 2

1

中央の onClick メソッドが必要です。それを呼びましょうupdateExpression(View v)。また、コードに関する注意: メソッド名は小文字で始める必要があります。これは Java の命名規則です。

  android:onClick="updateExpression" 

今実装:

public void updateExpression (View v)
{
  switch (v.getId())
  {
    case R.id.button1:
    //do stuff here
    break;
    case R.id.button2:
    //do other stuff here
    break;
  }
}

必要な理由v.getId()は、ボタンの ID を確認してから、その特定の ID である場合に何かを行うためです。すべてのボタンが同じメソッドを実装するため、このロジックが必要です。

于 2012-12-15T00:13:29.797 に答える
0

これがコードを使用した実装です....

onClick 関数で、v.getId()各 Android レイアウト ID と比較しますR.id.button1 R.id.button2

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

    //Here are some buttons defined in the XML layout as button1, button2, etc...
    Button button1 = (Button)findViewById(R.id.button1);        
    button1.setOnClickListener(myListener);
    Button button2 = (Button)findViewById(R.id.button2);        
    button2.setOnClickListener(myListener);
    Button button3 = (Button)findViewById(R.id.button3);        
    button3.setOnClickListener(myListener);

}

//Create an anonymous implementation of OnClickListener
private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
      Log.d(logtag,"onClick() called");              
      Toast.makeText(MainActivity.this, "The " + v.getId() + " button was clicked.", Toast.LENGTH_SHORT).show();

    }
};
于 2012-12-15T00:16:12.537 に答える