如果您将变量声明为final,那么您可以在调用AlertDialog.Builder()之前在代码中设置它,然后在onClick()中访问它,如下所示:

final int someParameter = someValue;

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(

this);

alertDialogBuilder

.setTitle("Are you sure?")

.setCancelable(false)

.setPositiveButton("OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

// Do something with parameter.

doSomeStuff(someParameter);

}

})

.setNegativeButton("Cancel",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});

// create alert dialog

AlertDialog alertDialog = alertDialogBuilder.create();

// show it

alertDialog.show();

这样,someParameter通过函数closure隐式传递给onClick(),因此不需要子类AlertDialog或向Activity添加额外的成员变量.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐