【发布时间】:2013-12-16 11:15:11
【问题描述】:
我有 2 个类 MainActivity 和 DialogBox,我的 *activity_main.xml* 中有一个按钮,最初是不可点击的。我希望每次用户输入正确的用户名和密码然后在我的对话框中单击 confrim 或 setPositiveButton 时使其可点击。
这是我的 MainActivity cpde:
public class MainActivity extends Activity {
Button buttonSetting;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonSetting = (Button) findViewById(R.id.buttonSettings);
}
public void ShowDialog(View view) {
DialogBox dialogBox = new DialogBox();
dialogBox.show(getFragmentManager(), "Dialog Box");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
这是我的对话框类:
public class DialogBox extends DialogFragment {
private static String username = "admin";
private static String password = "1234";
String typeUsername;
String typePassword;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final LayoutInflater layoutInflater = getActivity().getLayoutInflater();
View custom = layoutInflater.inflate(R.layout.custom, null);
final EditText editTextUsername = (EditText) custom.findViewById(R.id.editTextUsername);
final EditText editTextPassword = (EditText) custom.findViewById(R.id.editTextPassword);
builder.setView(custom);
typePassword = editTextPassword.getText().toString();
typeUsername = editTextUsername.getText().toString();
builder.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity(),
"Negative button was clicked",
Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton(R.string.confirm,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
typePassword = editTextPassword.getText().toString();
typeUsername = editTextUsername.getText().toString();
if (typePassword.equals(password)
&& typeUsername.equals(username))
{
View activity = layoutInflater.inflate(R.layout.activity_main, null);
Button buttonSettings = (Button) activity.findViewById(R.id.buttonSettings);
buttonSettings.setEnabled(true);
Toast.makeText(getActivity(), "correct!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Wrong input",
Toast.LENGTH_SHORT).show();
}
}
});
Dialog dialog = builder.create();
return dialog;
}
}
【问题讨论】:
-
暂时请参考Android Dev | Passing events back to the dialog's host。您将需要一个界面来与您的
Activity进行交互。 -
您的问题是什么以及代码出了什么问题
标签: android android-ui android-button android-dialogfragment