2013-08-30 2 views
-1

누군가가 나를 도울 수 있기를 바랍니다. OOP 지식이 부족하고 안드로이드에 초보자입니다.여러 개의 버튼이있는 timePicker

나는 6 개의 버튼이 있습니다. 각 버튼은 timePicker를 호출하고 버튼에 시간을 표시합니다. 어떻게 각 버튼을 구별하고 싶습니까?

여기 코드입니다 ..... 주셔서 감사합니다 .. :

public class TabTwo extends Activity implements OnClickListener { 

private Button btnBrfkst; 
private Button btnMtea; 
private Button btnLunch; 
private Button btnAftea; 
private Button btnDinner; 
private Button btnSupper; 

private Calendar mCalen; 
private int hourOfDay; 
private int minute; 
private int ampm; 
int timePickerInput ; 

private static final int Time_PICKER_ID = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_tab_two); 

    btnBrfkst = (Button) findViewById(R.id.button1); 
    btnMtea = (Button) findViewById(R.id.button2); 
    btnLunch = (Button) findViewById(R.id.button3); 
    btnAftea = (Button) findViewById(R.id.button4); 
    btnDinner = (Button) findViewById(R.id.button5); 
    btnSupper = (Button) findViewById(R.id.button6); 

    mCalen = Calendar.getInstance(); 
    hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
    minute = mCalen.get(Calendar.MINUTE); 
    ampm = mCalen.get(Calendar.AM_PM); 

    btnBrfkst.setOnClickListener(this); 
    btnMtea.setOnClickListener(this); 
    btnLunch.setOnClickListener(this); 
    btnAftea.setOnClickListener(this); 
    btnDinner.setOnClickListener(this); 
    btnSupper.setOnClickListener(this); 
} 

@Override 
@Deprecated 
protected Dialog onCreateDialog(int id) { 

    switch (id) { 
     case Time_PICKER_ID: 
      return new TimePickerDialog(this, TimePickerListener, 
        hourOfDay, minute, false); 
    } 
    return null; 
} 

private TimePickerDialog.OnTimeSetListener TimePickerListener = 
     new TimePickerDialog.OnTimeSetListener() { 

      // while dialog box is closed, below method is called. 
      public void onTimeSet(TimePicker view, int hour, int minute) { 

       switch (timePickerInput) { 
        case R.id.button1: 

       mCalen.set(Calendar.HOUR_OF_DAY, hour); 
       mCalen.set(Calendar.MINUTE, minute); 

       int hour12format = mCalen.get(Calendar.HOUR); 
       hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
       minute = mCalen.get(Calendar.MINUTE); 
       ampm = mCalen.get(Calendar.AM_PM); 
       String ampmStr = (ampm == 0) ? "AM" : "PM"; 

       // Set the Time String in Button 
       btnBrfkst.setText(hour12format + " : " + minute + "/" + ampmStr); 
       break; 

       case R.id.button2: 
       mCalen.set(Calendar.HOUR_OF_DAY, hour); 
       mCalen.set(Calendar.MINUTE, minute); 

       int hour12format2 = mCalen.get(Calendar.HOUR); 
       hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
       minute = mCalen.get(Calendar.MINUTE); 
       ampm = mCalen.get(Calendar.AM_PM); 
       String ampmStr2 = (ampm == 0) ? "AM" : "PM"; 
       btnMtea.setText(hour12format2 + " : " + minute + "/" + ampmStr2); 
       break; 

       case R.id.button3: 
       mCalen.set(Calendar.HOUR_OF_DAY, hour); 
       mCalen.set(Calendar.MINUTE, minute); 

       int hour12format3 = mCalen.get(Calendar.HOUR); 
        hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
       minute = mCalen.get(Calendar.MINUTE); 
        ampm = mCalen.get(Calendar.AM_PM); 
        String ampmStr3 = (ampm == 0) ? "AM" : "PM"; 
       btnLunch.setText(hour12format3 + " : " + minute + "/" + ampmStr3); 
       break; 

        case R.id.button4: 
        mCalen.set(Calendar.HOUR_OF_DAY, hour); 
        mCalen.set(Calendar.MINUTE, minute); 

        int hour12format4 = mCalen.get(Calendar.HOUR); 
        hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
        minute = mCalen.get(Calendar.MINUTE); 
        ampm = mCalen.get(Calendar.AM_PM); 
        String ampmStr4 = (ampm == 0) ? "AM" : "PM"; 
        btnAftea.setText(hour12format4 + " : " + minute + "/" + ampmStr4); 
       break; 

        case R.id.button5: 
         mCalen.set(Calendar.HOUR_OF_DAY, hour); 
         mCalen.set(Calendar.MINUTE, minute); 

         int hour12format5 = mCalen.get(Calendar.HOUR); 
         hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
         minute = mCalen.get(Calendar.MINUTE); 
         ampm = mCalen.get(Calendar.AM_PM); 
         String ampmStr5 = (ampm == 0) ? "AM" : "PM"; 
         btnDinner.setText(hour12format5 + " : " + minute + "/" + ampmStr5); 
       break; 

        case R.id.button6: 
         mCalen.set(Calendar.HOUR_OF_DAY, hour); 
         mCalen.set(Calendar.MINUTE, minute); 

         int hour12format6 = mCalen.get(Calendar.HOUR); 
         hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY); 
         minute = mCalen.get(Calendar.MINUTE); 
         ampm = mCalen.get(Calendar.AM_PM); 
         String ampmStr6 = (ampm == 0) ? "AM" : "PM"; 
       btnSupper.setText(hour12format6 + " : " + minute + "/" + ampmStr6); 
       break; 
       } 

      } 
     }; 

@Override 
public void onClick(View v) { 
    showDialog(Time_PICKER_ID); 
} 
} 
+0

전. 이미 내 질문을 편집했습니다. 백지 – niques

+0

이 코드를 실행하면 어떻게됩니까? 그게 무슨 문제 야? – nedaRM

+0

버튼의 .setText가 작동하지 않습니다. 날짜를 선택할 때 버튼에 표시하고 싶습니다. – niques

답변

0

변경이 :

@Override 
public void onClick(View v) { 
    showDialog(Time_PICKER_ID); 
} 

@Override 
public void onClick(View v) { 
    timePickerInput = v.getId(); 
    showDialog(Time_PICKER_ID); 
} 

에 당신은 당신의 시간을 표시하는 버튼을 알 수 있도록 버튼의 ID를가되도록 timerPickerInput를 설정해야

+0

그것이 작동합니다! 고마워요. :) – niques

+0

@niques 여러분을 환영합니다. 내가 그것을위한 몇 가지 대표를 얻을 수 있도록 정답으로 받아 들여주세요 :) – nedaRM

3

귀하의 활동이나 조각이 implements View.OnClickListener을해야한다. 다음 각 버튼과 같이 각 버튼을 등록해야합니다 :

당신의 onclick 방법에서 다음
Button buttonOne = (Button) findViewById(R.id.button_one); 
Button buttonTwo = (Button) findViewById(R.id.button_two); 

buttonOne.setOnClickListener(this); 
buttonTwo.setOnClickListener(this); 

:

타 옵션은 방법을 설정하는 것입니다
@Override 
public void onClick(View temp) 
{ 
    switch(temp.getId()) { 
     case R.id.button_one: 
      //do something 
      break; 
     case R.id.button_two: 
      //do something 
      break; 

    } 
} 

사용하여 각 버튼의 레이아웃 파일에서 호출 할 android:onClick="myMethodOne". 이런 방식으로 원할 경우 다른 메소드를 호출 할 수도 있고 동일한 메소드를 호출 할 수도 있고 onClick 메소드에서와 같이 ID를 구별 할 수도 있습니다.

+0

도와 주셔서 감사합니다 – niques

관련 문제