我有2个班级:
TelaCadastroRestaurante(扩展活动)和Metodos(不扩展活动)。
在我的第一堂课上,我有这个:http://i.imgur.com/N0jrjc1.png
在我的第二堂课上,我有这个:http://i.imgur.com/PimEoxr.png
那么,我想要什么?在我的方法caixaCerteza()中,我希望通过/作为PARAMETER 3传递方法mandarNuvem()。
公共类TelaCadastroRestaurante扩展了活动{
private EditText nomeRestaurante, emailRestaurante, telefoneRestaurante;
private Button buttonProximo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela_cadastro_restaurante);
incializarComponentes();
acaoBotoes();
}
public void incializarComponentes() {
nomeRestaurante = (EditText) findViewById(R.id.editTextNomeRestauranteTelaCadastroRestaurante);
emailRestaurante = (EditText) findViewById(R.id.editTextEmailRestauranteTelaCadastroRestaurante);
telefoneRestaurante = (EditText) findViewById(R.id.editTextTelefoneRestauranteTelaCadastroRestaurante);
buttonProximo = (Button) findViewById(R.id.buttonProximoTelaCadastroRestaurante);
}
public void acaoBotoes() {
buttonProximo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pegarValores();
callMandarNuvem();
}
});
}
public void pegarValores(){
final Restaurante rest = new Restaurante();
rest.setNomeRest(nomeRestaurante.getText().toString());
rest.setEmailRest(emailRestaurante.getText().toString());
rest.setTelefoneRest(Integer.parseInt(telefoneRestaurante.getText().toString()));
}
public void callMandarNuvem(){
Metodos.caixaCerteza(TelaCadastroRestaurante.this,
"Você tem certeza que deseja cadastrar o restaurante " + nomeRestaurante.getText().toString() + "?",
Metodos.mandarNuvem(TelaCadastroRestaurante.this));
}
}
公共课堂Metodos {
private static ProgressDialog dialog;
// Metodo que mostra o Aguarde a verificação
public static void taskInProgres(boolean mostrar, Context context) {
if (dialog == null) {
dialog = new ProgressDialog(context);
dialog = ProgressDialog.show(context, "","Espere um momento...", true);
}
if (mostrar) {
dialog.show();
} else {
dialog.dismiss();
}
}
// Metodo que mostra a caixa de certeza
public static void caixaCerteza(final Context context, final String texto, final Metodos metodo) {
AlertDialog.Builder builderaction = new AlertDialog.Builder(context);
builderaction.setTitle("Atenção!");
builderaction.setMessage(texto);
builderaction.setPositiveButton("Sim",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
builderaction.setNegativeButton("Não",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 static void mandarNuvem(final Context context){
Metodos.taskInProgres(true, context);
Restaurante rest = new Restaurante();
ParseObject restauranteParse = new ParseObject("Restaurante");
restauranteParse.put("nomeRestaurante", rest.getNomeRest());
restauranteParse.put("emailRestaurante", rest.getEmailRest());
restauranteParse.put("telefoneRestaurante", rest.getTelefoneRest());
restauranteParse.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(context,"Salvo com sucesso!", Toast.LENGTH_SHORT).show();
Metodos.taskInProgres(false, context);
} else {
Toast.makeText(context, e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
}
答案 0 :(得分:1)
您无法传递方法,但包含方法的对象。这意味着可能会有更多的代码。使用类似
的方式调用caixaCerteza
caixaCerteza(..., ..., new Callable() {
@Override
public void call() {
mandarNuvem();
}
});
在方法caixaCerteza(..., ..., Callable callable)
中,使用
callable.call();
修改强>
如果方法mandarNuvem
可以放在实现某个接口/扩展超类(例如,Callable
)的类中,然后可以作为{的第三个参数,那么这甚至可以简化。直接{1}}(而不是将其包装在匿名的caixaCerteza
对象中)。