上问题代码
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;而且内部类里可以修改外部类的成员变量。
如果外部类方法无法得到内部类局部变量的值,那应该是哪里写错了。