2016-07-05 50 views
3

我有這個兩個ImageButton的意見redButton和blueButton ,但在我的代碼使用只是一個定義我可以通過在兩個Button之間切換來使用兩個Button的一個定義嗎?

ImageButton GButton = (ImageButton) findViewById(R.id.blueButton); 

然後在clickListener我有這樣的代碼:

GButton.setOnClickListener(new ImageButton.OnClickListener() { 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case (R.id.blueButton): 
       GButton = (ImageButton) findViewById(R.id.redButton); 
      break; 

      case (R.id.redButton): 
       GButton = (ImageButton) findViewById(R.id.blueButton); 
      break; 
     } 
    } 
}); 

我想clickListener切換到redButton。但事實並非如此。

+0

你爲什麼不只是改變你的藍色按鈕的背景顏色爲紅色的onClick? –

+0

沒有更多的代碼在點擊事件中,而不是僅用於顏色 –

回答

2

答:

是,你可以通過它們 之間切換使用兩個按鈕中的一個定義。

問題:

您的代碼不工作,因爲你沒有設置clickListner後 切換ID的GButton的。

像這樣做,它會開始工作:

GButton.setOnClickListener(new ImageButton.OnClickListener() { 
public void onClick(View v) { 
    switch (v.getId()) { 
     case (R.id.blueButton): 
      Toast.makeText(MainActivity.this, "blue", Toast.LENGTH_SHORT).show(); 
      GButton = (ImageButton) findViewById(R.id.redButton); 

      //ADD IT HERE 

      GButton.setOnClickListener(this); 
     break; 

     case (R.id.redButton): 
      Toast.makeText(MainActivity.this, "red", Toast.LENGTH_SHORT).show(); 
      GButton = (ImageButton) findViewById(R.id.blueButton); 

      //ADD IT HERE 

      GButton.setOnClickListener(this); 
     break; 
    } 
} 
}); 
+0

它的擔心非常感謝你:) –

+0

我的榮幸快樂編碼:) –

0

onClick方法,你應該重置意見setOnClickListener方法

3

是的,你可以通過使用setTag()方法,並通過getTag中的onClick檢查新標籤()方法。

還有一個建議ViewFlipper在一個之間切換。

這裏是它的例子:

<ViewFlipper android:id="@+id/viewFlipper"> 
    <RelativeLayout> 
     // Red Button 
    </RelativeLayout> 
    <RelativeLayout> 
     // Green Button 
    </RelativeLayout> 
</ViewFlipper> 

希望它可以幫助你。

0

請使用此代碼

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageButton; 

public class MainActivity extends AppCompatActivity implements  View.OnClickListener { 

ImageButton btnRed, btnBlue; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btnBlue = (ImageButton) findViewById(R.id.btn_blue); 
    btnRed = (ImageButton) findViewById(R.id.btn_red); 
    btnBlue.setOnClickListener(this); 
    btnRed.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case (R.id.btn_blue): 
      //TODO handle blue ImageButton click 
      break; 
     case (R.id.btn_red): 
      //TODO handle red ImageButton click 
      break; 
    } 
} 
} 
+1

他要求切換定義而不是如何定義onclick .. !! –

相關問題