0

Bir arabirim kullanarak iletişim düğmelerini işlemeye çalışıyorum. Ben robot bu çözüm var - java:C# dinleyicisi tanıtıcı

1) Beyan tek arayüz:

public interface DialogPopUpListener { 
    void onConfirmButtonClick(); 
    void onCancelButtonClick(); 
    } 

2) Uygulanan diyalog:

GenericPopUpDialogSimple.genericCreatePopUp(context, new SimpleDialogPopUpListener() { 
        @Override 
        public void onConfirmButtonClick(String editTxtInput) { 
         //handle positive button        
        } 

        @Override 
        public void onCancelButtonClick() { 
         //handle negative buton 
        } 
       }); 
: iletişimini görüntülemek için

public static void genericCreatePopUp(final Context context, final SimpleDialogPopUpListener listener) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setTitle("Title"); 
    builder.setMessage("Message"); 

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      // do nothing to ignore autoclose 
     } 
    }); 


    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
       // do nothing to ignore autoclose 
     } 
    }); 


    final AlertDialog dialog = builder.create(); 
    dialog.show(); 

    //Overriding the handler immediately after show POSITIVE 
    dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       listener.onConfirmButtonClick(""); 
       dialog.dismiss(); 

     } 
    }); 

    //Overriding the handler immediately after show NEGATIVE 
    dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      listener.onCancelButtonClick(); 
      dialog.dismiss(); 
     } 
    }); 
} 

3) Çağrı fonksiyonu

Şimdi bu işlevselliği C#:

1) Aynı arabirimi açıkladı;

2) Uygulanan diyalog oluşturma: Bu yöntemi çağırmak ve arayüz yöntemlerini geçersiz kılabilir nasıl İşte

  public async void createDialog(SimpleDialogPopUpListener listener) { 
     var dialog = new MessageDialog("Message", "Title"); 

     // Add positive command and set callback 
     dialog.Commands.Add(new UICommand(btnOkTxt, UICommandInvokedHandler => { 
      listener.onConfirmButtonClick(); 
     }) { Id = 0 }); 

     // Add negative command and set callback 
     dialog.Commands.Add(new UICommand(btnCancelTxt, UICommandInvokedHandler => { 
      listener.onCancelButtonClick(); 
     }) { Id = 1 }); 

     // Show the message dialog 
     await dialog.ShowAsync(); 
     } 

3) , sorun mı?

cevap

0

C# içinde biraz farklı çünkü satır içi sınıfları Java olarak desteklemiyor. Bir çözüm, arabiriminizi uygulayan bir sınıfı tanımlamak ve yönteminizi çağırırken bu sınıfı parametre olarak kullanmaktır.

public class MyImplementor : DialogPopUpListener { 
    public void onConfirmButtonClick() { 
     Debug.WriteLine("T E S T --> ok"); 
     } 

    public void onCancelButtonClick() { 
     Debug.WriteLine("T E S T --> cancel"); 
     } 
    } 

ve size yöntemini çağırın:: Yani gerekecek

 createDialog(new MyImplementor()); 
İlgili konular