上问题代码
public class SettingActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); initRemoteLockScreen(); } public void initRemoteLockScreen(){ SettingClickView rls = (SettingClickView) findViewById(R.id.siv_remoteLockScreen); rls.setTitle("远程锁屏密码设置"); rls.setDesc("点击进行设置密码"); rls.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { startremotelockdialog(); } }); } public void startremotelockdialog(){ showPasswordSetDailog(dialogTitle,new AlertDialogEngineInterface() { @Override public void saveSp(String value) { if (value == null){ return; } mPref.edit() .putString("lockScreenPass", MD5Utils.encode(value)).commit(); } }); } public void showPasswordSetDailog(String title, final AlertDialogEngineInterface dialogInterface) { AlertDialog.Builder builder = new AlertDialog.Builder(this); final AlertDialog dialog = builder.create(); View view = View.inflate(this, R.layout.dailog_set_password, null); dialog.setView(view, 0, 0, 0, 0); TextView tvTitle = (TextView) findViewById(R.id.dialog_tv_title); tvTitle.setText(title); Log.e("xxx",title);//**title值不为空** final EditText etPassword = (EditText) view .findViewById(R.id.et_password); final EditText etPasswordConfirm = (EditText) view .findViewById(R.id.et_password_confirm); Button btnOK = (Button) view.findViewById(R.id.btn_ok); Button btnCancel = (Button) view.findViewById(R.id.btn_cancel); btnOK.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String password = etPassword.getText().toString(); String passwordConfirm = etPasswordConfirm.getText().toString(); if (!TextUtils.isEmpty(password) && !passwordConfirm.isEmpty()) { if (password.equals(passwordConfirm)) { dialogInterface.saveSp(password); dialog.dismiss(); } } }); btnCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss();// 隐藏dialog } }); dialog.show(); } private interface AlertDialogEngineInterface{ void saveSp(String value); } }结论: 内部类调用外部类方法时传参是可以传参的,不管外部类方法是private,还是public;而且内部类里可以修改外部类的成员变量。 如果外部类方法无法得到内部类局部变量的值,那应该是哪里写错了。