2015-06-05 4 views
1

Я хочу передать метод (SaveClound) в качестве параметра (AlertDialog параметров), поэтому я могу использовать методы дифферент с помощью этого параметра (в actionButtons Метод).Как передать метод в качестве параметра в Android?

public void actionButtons(){ 
    buttonVoltar.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      alertDialog(saveClound()); 
      // see? I want to call the a method through this parameter 
     } 
    }); 
} 

public void alertDialog(Method methodName) { 
    AlertDialog.Builder builderaction = new AlertDialog.Builder(this); 
    builderaction.setTitle("Atenção!"); 
    builderaction.setMessage("Você tem certeza que deseja sair?"); 

    builderaction.setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // i want to call here the paramater i'm passing on this method (methodName) 
        // so i can call any methods i want right here 
       } 
      }); 
    builderaction.setNegativeButton("No",new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 
    AlertDialog alert = builderaction.create(); 
    alert.setIcon(R.drawable.ic_stop); 
    alert.show(); 
} 


public void saveClound(){ 
    Toast.makeText(getApplicationContext(), "ABC", Toast.LENGTH_SHORT).show(); 
} 
+1

Если вы пытаетесь передать метод в качестве параметра, не представляется возможным изначально в Java. Есть способы сделать это через интерфейсы. Проверьте этот вопрос. http://stackoverflow.com/questions/2186931/java-pass-method-as-parameter – JDenais

+0

Я видел это, но я не мог его понять ..:/ –

+0

Отъезд мой [ответ] (https: // stackoverflow .com/вопросы/16800711/ближнего функции-а-а-параметр-в-Java/46933426 # 46933426) –

ответ

1

Вы можете сделать это, передав работоспособной методу, например

public void actionButtons(){ 
    buttonVoltar.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Runnable runnable = new Runnable() { 
       @Override 
       public void run() { 
        saveClound(); 
       } 
      }; 

      alertDialog(runnable); 
     } 
    }); 
} 

public void alertDialog(Runnable runnable) { 
    AlertDialog.Builder builderaction = new AlertDialog.Builder(this); 
    builderaction.setTitle("Atenção!"); 
    builderaction.setMessage("Você tem certeza que deseja sair?"); 

    builderaction.setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       // i want to call here the paramater i'm passing on this method (methodName) 
       // so i can call any methods i want right here 
       new Handler().post(runnable); 
      } 
     }); 
    builderaction.setNegativeButton("No",new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 
    AlertDialog alert = builderaction.create(); 
    alert.setIcon(R.drawable.ic_stop); 
    alert.show(); 
} 

public void saveClound(){ 
    Toast.makeText(getActivity(), "ABC", Toast.LENGTH_SHORT).show(); 
} 
Смежные вопросы