2014-01-26 5 views
0

나는 알람을 설정하려고 할 때 clock.each 버튼과 같은 숫자를 나타내는 사용자 정의 대화 상자 환경 설정을 가지고 있습니다. 대화 상자 환경 설정에서 각 단추를 onClick 할 수 있습니까? 대화 우선 시작대화 상자 환경 설정에서 onclick 이벤트

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center"> 

<LinearLayout 
    android:id="@+id/showTimer" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:text="_ _ : _ _" 
     android:textSize="20dp" 
     android:textStyle="bold" /> 

</LinearLayout> 

<RelativeLayout 
    android:id="@+id/Buttons" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_below="@+id/showTimer" 
    android:layout_marginTop="10dp"> 

    <Button 
    android:id="@+id/button1" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/button5" 
    android:layout_alignBottom="@+id/button5" 
    android:layout_alignLeft="@+id/button3" 
    android:layout_centerInParent="true" 
    android:text="6" 
    android:textStyle="bold" 
    android:textSize="20dp" 
    android:tag="1" 
    android:background="@android:color/transparent" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="100dp" 
    ... 

이 설정되어 레이아웃 : 이 내 대화 레이아웃 (time_picker)의 일부입니다

<com.example.test.TimerForNoti 
    android:key = "pref_sync_noti_timer" 
    android:title = "@string/pref_sync_noti_timer" 
    android:summary = "@string/pref_sync_noti_timer_summ" 
    android:dialogMessage = "@string/pref_sync_noti_timer"> 
</com.example.test.TimerForNoti> 

을이 대화 선호 (TimerForNoti)의 클래스입니다 :

public class TimerForNoti extends DialogPreference 
{ 

public TimerForNoti(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    setDialogLayoutResource(R.layout.time_picker); 
    setPositiveButtonText(R.string.ok); 
    setNegativeButtonText(R.string.cancel); 

    Dialog di = new Dialog(context); 
    di.setContentView(R.layout.time_picker); 

    OnClickListener test = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String tag = v.getTag().toString(); 
      if(tag == "1"){ 
       Log.v("onOne", "ok"); 
      } 
          // ..... 

     } 
    }; 

    Button btn1 = (Button) di.findViewById(R.id.button1); 
    btn1.setOnClickListener(test); 
} 

}

+0

클릭 한 숫자로 알람 또는 시간을 설정 하시겠습니까? 좀 더 분명해질 수 있니? – Umitk

+0

예 그와 비슷한 것을 원합니다 –

답변

0

나는 귀하의 질문을 바로 이해할 수 있습니다. 각 버튼의 태그를 설정하고 그들 모두를위한 하나의 OnClickListener을 설정

<Button 
    android:id="@+id/button1" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/button5" 
    android:layout_alignBottom="@+id/button5" 
    android:layout_alignLeft="@+id/button3" 
    android:layout_centerInParent="true" 
    android:text="6" 
    android:textStyle="bold" 
    android:textSize="20dp" 
    android:tag="6" 
    android:background="@android:color/transparent" /> 

코드 :

또한
 OnClickListener buttonsListener = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String buttonText = v.getTag().toString(); 
       // your logic here 
      } 
     }; 

     Button btn1 = (Button)findViewById(R.id.button1); 
     btn1.setOnClickListener(buttonsListener); 

     Button btn2 = (Button)findViewById(R.id.button2); 
     btn2.setOnClickListener(buttonsListener); 

     Button btn3 = (Button)findViewById(R.id.button3); 
     btn3.setOnClickListener(buttonsListener); 

     // your buttons here 

당신이 버튼을 클릭 한 결정 OnClickListener에서 v.getId()를 사용할 수

+0

답변을 시도하지만 작동하지 않습니다 : -? –

+0

충돌이나 다른 문제가 있습니까? – Dimmerg

+0

아니오, 버튼을 누르지 않은 것처럼 크래시가 발생하지 않습니다. –

0

많은 질문을 이해했습니다. 클릭 한 모든 단추에서 하나의 메서드를 호출하려고합니다. 즉 XML에서 모든 버튼 요소에 이러한 추가의 경우 :

<Button 
    android:onClick="OnClick" 
    ..      /> 

그리고 당신은 작업을 수행하려는 된 .java 파일이 방법은 :

public void OnClick(View v){ 
    // do something.... 
} 

또는 직접 버튼에 setOnClickListener를 호출 할 수 있습니다 개체

button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      // do something.... 
     } 
}); 
+0

나는이 방법을 시도하지만 작동하지 않으며 왜 ... 아마 이것은 대화 환경 설정 활동이 아니기 때문에 가능합니다 –

+0

가능합니다, 시스템이 OnClick 메소드를 활동으로 검색하기 때문에 작동하지 않을 수 있습니다. 이것 좀 봐 : http://stackoverflow.com/questions/4243704/using-onclick-attribute-in-layout-xml-causes-a-nosuchmethodexception-in-android – Dimmerg

관련 문제