2016-09-30 13 views
0

アクティビティにボタンのグループがあります。ボタンをクリックすると、テキストビューにテキストが設定され、ボタンの背景色が変更されます。次に同じボタンを押すと次のアクティビティに移動します。以下のコードではこれらの操作を行います。ボタンのテキストを変更して、2回目のクリック操作を行いました。テキストを変更することなくそれを行うより良い方法がありますか?2つのクリックアクションを行う1つのボタンを作成する

私は1つのボタンのために示しているコードです。同じように私は他のボタンのためにそれを行います。

活性

public class Activity2 extends ActionBarActivity implements View.OnClickListener { 

Button R1btn, R2btn, R3btn; 
private TableLayout tableLayout; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_2); 
     tableLayout=(TableLayout)findViewById(R.id.tl); 

    R1btn = (Button) findViewById(R.id.button1); 
    R1btn.setOnClickListener(this); 

    } 
    @Override 
    public void onClick(View view) { 
    switch(view.getId()){ 

    case R.id.button1: 
     Button button1 = (Button)view; 
     String btnText = button1.getText().toString(); 

     if (btnText.equals("1")) { 

     R1btn.setBackgroundColor(Color.RED); 
     R2btn.setBackgroundColor(Color.GREEN)); 
     R3btn.setBackgroundColor(Color.GREEN)); 

     TextView rTV = (TextView) findViewById(R.id.rTV); 
      rTV.setText(R1); 
     button1.setText("1 "); 

} else if (btnText.equals("1 ")) { 

      Intent intent = new Intent(Activity2.this, Activity3.class); 
      startActivity(intent); 
     button1.setText("1"); 

    break; 
} 
} 
} 
+0

各ボタンにブール変数を使用し、その値に応じてアクションを変更します。 –

答えて

1

ボタンのタグを使用すると、目標を達成することができます。サンプルコードは以下の通りです:

Button button1 = (Button)view; 
     String btnTag= button1.getTag().toString(); 
// For First Time when button is clicked 
     if (btnTag.equals("") || btnTag.equals("CLICKED2")) { 
     R1btn.setBackgroundColor(Color.RED); 
     R2btn.setBackgroundColor(Color.GREEN)); 
     R3btn.setBackgroundColor(Color.GREEN)); 
     button1.setTag("CLICKED1"); 
     } else if (btnTag.equals("CLICKED1")) { 
     button1.setTag("CLICKED2"); 
     Intent intent = new Intent(Activity2.this, Activity3.class); 
     startActivity(intent); 
     } 
break; 
+0

タグ()は良い選択肢と思われます。 if条件にbtnTag.equals( "CLICKED2")も追加したのはなぜですか? – user3844782

+0

は、実行するクリックを確認する – Anjali

+0

ええ、それを理解しました。それがあってもなくてもチェックされる。 – user3844782

0

使用ロングクリック

button = (Button) findViewById(R.id.button_view); 
button .setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     shortclick(); 
    } 
}); 

button .setOnLongClickListener(new View.OnLongClickListener() { 
public boolean onLongClick(View v) { 
    longclick(); 
    return true; 
} 

})。

public void shortclick() 

{ Toast.makeText(この、 "なぜあなたはそれをやったことが痛い!!!?"、Toast.LENGTH_LONG).SHOW();

}

公共ボイドlongclick()

public void shortclick() 

や他の単一クリック

0

あなたは、対応するボタンにマップされます静的なブール変数を定義することができます。ボタンをクリックすると、変数がtrueになります。変数の値に応じて、アクションを実行できます。ボタンのテキストを変更する必要はありません。

+0

実際に私は試しましたが、すべてのことをうまくやり遂げることができませんでした。 – user3844782

0

//値

boolean isButton1 = false; 

//ここでメソッド

@Override 
    public void onClick(View view) { 
    switch(view.getId()){ 

    case R.id.button1: 

    isButton1 != isButton1; 
     if (isButton1) { 

     R1btn.setBackgroundColor(Color.RED); 
     R2btn.setBackgroundColor(Color.GREEN)); 
     R3btn.setBackgroundColor(Color.GREEN)); 

     TextView rTV = (TextView) findViewById(R.id.rTV); 
      rTV.setText(R1); 

    } else { 

      Intent intent = new Intent(Activity2.this, Activity3.class); 
      startActivity(intent); 

    } 
    break; 

} 
} 
0

をクリックして初期化するには、誰かが一時停止にプレイから変化し、彼自身のButtonクラスを作成した例です。アイコン。

これはすべてのコードが1つの中心的な場所にあるので、かなり良い方法です。あなただけの、あなたが(例えばメソッドにupdateStateで)それをチェックして、外観を変更することができ、ボタンは「再生や一時停止」されるようになりました場合

を「記憶」し、静的なブール値を追加する必要があり

https://github.com/CyanogenMod/android_packages_apps_Apollo/blob/085099c04708d75380b1c996094dbdc7dc0a11a0/src/com/andrew/apollo/widgets/PlayPauseButton.java

現在の状態に応じて

static boolean isPlay = true; 
public void updateState() { 
     if (isPlay) { 
      //Change appearance 
      isPlay = false; 
     } else { 
      //Change appearance 
      isPlay=true; 
     } 
    } 
関連する問題