android - 如何在 Android 中将方法作为参数传递?

标签 android methods parameters

我想传递一个方法 (SaveClound) 作为参数 (AlertDialog Parameter) 这样我就可以通过这个参数使用不同的方法 (in actionButtons Method).

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();
}

最佳答案

例如,您可以通过将可运行对象传递给该方法来做到这一点

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();
}

关于android - 如何在 Android 中将方法作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658488/

相关文章:

android - 带有背景声音的Android随机背景图片

android - 如何在Tab中显示ListView?

android - 具有多个捕捉点的 CoordinatorLayout

java - 尝试使用 int Java 反转 123 _> 321

bash - UNIX:如何以文件作为输入来运行程序

parameters - H.264 流的序列/图片参数集的可能位置

android - WebRTC Android,无法得到我应该做什么?

javascript - var 与 function,哪个更适合常量和方法

java - 当你可以只使用 object.variable 名称来获取或设置时,为什么还要使用 set 和 get 方法?

c# - 为什么必须转换 SQL 查询的返回参数值?