彈出一個保存文件的對話框,要控制輸入內容限制,同時內容為空時保存按鈕不可用。
原文地址請保留http://www.cnblogs.com/rossoneri/p/4140184.html
直接上代碼:
LayoutInflater mInflater = LayoutInflater.from(mActivity); View saveView = mInflater.inflate(R.layout.alert_dlg_save, null); // 設置輸入文件名的EditText屬性 final EditText filename = (EditText) saveView.findViewById(R.id.dlg_save_input_filename); filename.setFilters(new InputFilter[] {new InputFilter.LengthFilter(255), new SpecialFilter() }); filename.setText(mStrAsName); TextView defaultPath = (TextView) saveView.findViewById(R.id.dlg_save_default_path); defaultPath.setText(DataStruct.gFloder + "/"); AlertDialog.Builder builder = new AlertDialog.Builder(mActivity, AlertDialog.THEME_HOLO_LIGHT); builder.setTitle(R.string.maker_menu_save); builder.setIcon(R.drawable.icon_small); builder.setView(saveView); builder.setPositiveButton(R.string.maker_menu_save, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { // TODO Auto-generated method stub String name = filename.getText().toString().trim(); name += ".astp"; String namePath = DataStruct.gFloder + "/" + name; if (saveFile(namePath)) { mStrSavedPath = namePath; mBtnSave.setEnabled(false); } else { ToastFailedSave(); } } }); builder.setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { // TODO Auto-generated method stub } }); Dialog dialog = builder.create(); dialog.show(); //show()放在 監聽文字改變事件之后會報錯 // 獲取PositiveButton 重點在這里 final Button btn = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE); // 輸入不能為空 filename.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start,int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start,int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub String name = s.toString().trim(); if (name.isEmpty()) btn.setEnabled(false); else btn.setEnabled(true); } });