¿Cómo puedo pasar una función como un parámetro a otra función en android?
Entonces, ¿cómo puedo pasar una función como un parámetro a otra función, por ejemplo, quiero pasar esta función:
public void testFunkcija(){ Sesija.forceNalog(reg.getText().toString(), num); }
en esto:
- OnActivityResult sólo se reconoce como variable
- Problemas con el teclado Android popupCharacters
- Mostrar tostadas desde dentro del método estático en Android
- ¿Restablecer SharedPreferences?
- Métodos WebView no se llama en android
public static void dialogUpozorenjaTest(String poruka, Context context, int ikona, final Method func){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context); alertDialogBuilder.setTitle("Stanje..."); alertDialogBuilder .setMessage(poruka) .setIcon(ikona) .setCancelable(true) .setPositiveButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { //here } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); }
- JNI / Android: llamada a un método no estático en Java desde C ++?
- Cómo llamar al método con el parámetro Ver en Android Studio
- ¿Qué es la lógica detrás de super.method o después de super.method en android?
- Llamar un método de actividad de BroadcastReceiver en Android
- Eclipse Content Assist no funciona con Android
- ¿Cómo obtener un método llamado con diferentes parámetros?
- ¿Qué es un evento de presionar las mejillas?
- Android obtener el nombre actual de actividad para el método polimórfico
Puede utilizar un Runnable para envolver su método:
Runnable r = new Runnable() { public void run() { Sesija.forceNalog(reg.getText().toString(), num); } }
Luego pasarlo a su método y llamar a r.run();
Donde lo necesite:
public static void dialogUpozorenjaTest(..., final Runnable func){ //..... .setPositiveButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { func.run(); } }); }
Bueno, ya que no hay dellegates en Java (oh C # te extraño tanto), la forma en que puedes hacerlo es crear una clase que implemente una interfaz, tal vez runnable o alguna interfaz personalizada y que usted puede llamar a su método a través de la interfaz .
Las funciones no se pueden transmitir directamente. Puede utilizar una implementación de interface
como un mecanismo de devolución de llamada para realizar la llamada.
Interfaz:
public interface MyInterface { public void testFunkcija(); }
Implementación:
public class MyInterfaceImpl implements MyInterface public void testFunkcija(){ Sesija.forceNalog(reg.getText().toString(), num); } }
Y pasarla una instancia MyInterfaceImpl
según sea necesario para:
public static void dialogUpozorenjaTest(MyInterface myInterface, ...) myInterface.testFunkcija(); ...
La forma más sencilla es usar runnable
vamos a ver cómo
//this function can take function as parameter private void doSomethingOrRegisterIfNotLoggedIn(Runnable r) { if (isUserLoggedIn()) r.run(); else new ViewDialog().showDialog(MainActivity.this, "You not Logged in, please log in or Register"); }
Ahora vamos a ver cómo puedo pasar cualquier función que (no voy a usar la expresión lambda)
Runnable r = new Runnable() { @Override public void run() { startActivity(new Intent(MainActivity.this, AddNewPostActivity.class)); } }; doSomethingOrRegisterIfNotLoggedIn(r);
Pasemos otra función
Runnable r = new Runnable() { @Override public void run() { if(!this.getClass().equals(MyProfileActivity.class)) { MyProfileActivity.startUserProfileFromLocation( MainActivity.this); overridePendingTransition(0, 0); } } }; doSomethingOrRegisterIfNotLoggedIn(r);
Eso es Feliz pensamiento grande
- Cambiar dinámicamente el color de la imagen SVG en android
- Eliminar elemento en ArrayAdapter <String> en ListView