2016-05-03 24 views
-1

私はボタンとして使用する画像ビューを持っています。私はonclickメソッドを設定し、その中にswitchステートメントを宣言しました。ボタンをクリックするたびに必要です。 、私はケース0、ケース1、ケース2、ケース3を設定し、私はそれぞれのケースに対して必要なメソッドを置くが、ボタンをクリックするたびにケースは混在するように見え、ケース0のみを呼び出すケース3、何が間違っているのかわからない、私は古いプロジェクトでこのコードを使用し、それはうまくいったが、今何がうまくいかないのか分からない。Androidスイッチのステートメントが正しく機能していない

は、ここに私のコードです:

// i tried to use static, final int but still it's the same problem. 
private int textnumber = 0; 
button_text.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      switch (textnumber) { 

     case 0: 
      //changeTextColor(int) method, for each number it changes the text's color. 
      changeTextColor(1); 
      Toast.makeText(getApplicationContext(),"text color is 1",Toast.LENGTH_SHORT).show(); 
      break; 
     case 1: 
      changeTextColor(2); 
      Toast.makeText(getApplicationContext(),"text color is 2",Toast.LENGTH_SHORT).show(); 
      break; 
     case 2: 
      changeTextColor(3); 
      Toast.makeText(getApplicationContext(),"text color is 3",Toast.LENGTH_SHORT).show(); 
      break; 
     case 3: 
      changeTextColor(4); 
      Toast.makeText(getApplicationContext(),"text color is 4",Toast.LENGTH_SHORT).show(); 
      break; 

    } 

     } 
    }); 

private void changeTextColor(int id){ 
    //mRenderer is a class that uses GLES 2.0 (glsurfaceview etc...); 
    //mObjectsData is a class that i use to store different datas 
    if(id == 1){ 
    textnumber = 1; 
    mObjectsData.mTextColor = "yellow"; 
    mRenderer.requestRender(); 
    } 
    else if(id == 2){ 
     textnumber = 2; 
     mObjectsData.mTextColor = "green"; 
     mRenderer.requestRender(); 
    } 
    else if(id == 3){ 
     textnumber = 3; 
     mObjectsData.mTextColor = "blue"; 
     mRenderer.requestRender(); 
    } 
    else if(id == 4){ 
     textnumber = 4; 
     mObjectsData.mTextColor = "red"; 
     mRenderer.requestRender(); 
    } 
} 
+1

does changeTextColor change textnumber variable?そのコードも表示できますか? –

+0

@MattWolfeチェックをしてください! –

+0

changeTextColor()内にある場合は、最後のelseでtextnumberを4に設定するので、1つのフルサイクル後、スイッチは実行されなくなります。それがここで問題になるのでしょうか? – Levon

答えて

0

はたぶん、あなたは私のような同じミスを犯しました。私のミスはonclicklistenerを設定し、ボタンを宣言した私の古い質問

android studio OnClicklistener no reaction on first Click

に見えます。私はただ一つしか作れてはいけませんでした。

+0

私はsrc、width、height、およびidのみを.xmlレイアウト内で使用します。 –

1

可変テキスト番号を別の場所に変更する必要があるようです。スイッチステートメントやアンドロイドスタジオには何の理由もなくあなたの変数を変更させる魔法はありません。 P.S.あなたのコードはこれにかなり減らすことができます:

private int textnumber = 0; 
private String[] colors = new String[] { "yellow", "green", "blue","red" }; 

//some method 
    button_text.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      int oldColor = textnumber; 
      textnumber = (textnumber + 1) % 4; 
      Toast.makeText(getApplicationContext(),"text color is " + textnumber,Toast.LENGTH_SHORT).show(); 
      mObjectsData.mTextColor = colors[oldColor]; 
      mRenderer.requestRender(); 

     } 
    }); 
関連する問題