У меня есть 2 класса MainActivity
и DialogBox
и есть одна кнопка в моей * activity_main.xml *, которая изначально не доступна для кликов. Я хочу сделать его кликабельным каждый раз, когда пользователь вводит правильное имя пользователя и пароль, а затем нажимает confrim или setPositiveButton
в моем диалоговом окне.Как установить кнопку, кликабельную, из другого класса?
Вот мой cpde для MainActivity:
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;
}
}
Вот мой DialogBox класс:
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 | Передача событий обратно на хост диалога] (http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents). Вам понадобится интерфейс для взаимодействия с вашей «Деятельностью». –
что у вас на этом вопрос и что происходит с кодом? –