1

次のコードを使用して、Java で単純な Android アプリを作成しようとしています。

public class MainActivity extends Activity {

    //Declare variables
    boolean first = true;
    boolean secondorbefore = true;

        Button ClickMe = (Button) findViewById(R.id.clicker);

        ClickMe.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //Check to see if this is the first click
                if (first = true) {
                first = false;
                // DO STUFF FOR FIRST CLICK
                } else if ((secondorbefore = true) {
                    //so this is the second click?
                    secondorbefore = false;
                // DO STUFF FOR SECOND CLICK                
                    } else {
                    //OK it's the third click or later
                // DO STUFF FOR THIRD OR LATER CLICKS
                }
            }
        });


    }

ただし、if条件は1回しか実行されないようです。secondorbefore 変数を false に設定するなど、最初のインスタンスでコードを実行しますが、その後のクリックは何もしないようです。コード OnClickListener は後続のクリックで実行されていますが、条件ステートメントを実行していません。

Javaは初めてなので、おそらく非常に明らかな間違いを犯しています。

よろしくお願いします。

4

5 に答える 5

6

ヒント:

  • =代入演算子です。
  • ==等値演算子です。
  • if ステートメントで代入演算子を使用するとどうなりますか??
  • if ステートメントで equalityoperator を使用するとどうなりますか??
于 2013-04-09T13:05:02.863 に答える
4

条件では、単一のではなく、比較のためifに常に演算子を使用する必要があります。したがって、次のようになります。===

if (first == true) {   // this is comparison
        first = false;  // this is assignment
        // DO STUFF FOR FIRST CLICK
 } else if ((secondorbefore == true) {
        //so this is the second click?
         secondorbefore = false;
        // DO STUFF FOR SECOND CLICK                
 } else {
        //OK it's the third click or later
        // DO STUFF FOR THIRD OR LATER CLICKS
 }
于 2013-04-09T13:06:10.687 に答える
3

=代わりに使用する場合==は、比較する代わりに値を割り当てています。そして、割り当ての戻り値は、割り当てられている値です。したがって、その場合は次のようになりますtrue

if(bool = true){...}

if(true){...}

比較すると同等です。違いは、boolこのステートメントから新しい値を引き継ぐことです。

于 2013-04-09T13:05:50.580 に答える
2

これ if (first = true) をに変更{ if (first == true) {

ここで = は代入演算子ですが、 == は等価演算子です。

于 2013-04-09T13:04:55.583 に答える
1

変数が他の何かと等しいかどうかを確認するときは、常に使用します==

すなわち

public void onClick(View v) {
    //Check to see if this is the first click
    if (first == true) {
        first = false;
        // DO STUFF FOR FIRST CLICK
    } else if ((secondorbefore == true) {
        //so this is the second click?
        secondorbefore = false;
        // DO STUFF FOR SECOND CLICK                
    } else {
        //OK it's the third click or later
        // DO STUFF FOR THIRD OR LATER CLICKS
    }
}
于 2013-04-09T13:06:02.163 に答える