Intereting Posts
AdapterView.OnItemClickListener с большим количеством ListView Сохранение строки во внутренней памяти, а затем ее отображение Android. Как использовать одни и те же локализуемые сообщения для всех языков в стране? Как сделать кнопочный щелчок и просмотреть элемент списка нажмите в настройке просмотра списка в android Извлечь список пользователей из Firebase Authentication Сигнал R Собственное Android-приложение Не удалось выполнить переговоры Facebook Как кнопка, перенаправляющая на сайт facebook в android Используйте другое соглашение об именах для подписанных apks, сгенерированных с помощью мастера на Android Studio Событие ListView onClick не запускается с помощью связанного адреса электронной почты Тестирование единицы измерения Где я должен писать временный файл? Почему maxWidth на кнопке не работает и как его обойти? Как реализовать мультитач-жест в android JSApplicationIllegalArgumentException с реагентом ApplyTransformation метод, не вызываемый в пользовательской анимации

Как включить кнопку переключения и включить ее, если я набрал текст в двух текстовых файлах и имени пользователя

Я написал код, чтобы проверить, являются ли имя пользователя и пароль для администратора или нет … Если да, перенаправлять на активность администратора (Activity_2), другие мудрые перенаправляют пользователя на другую активность (ac) … но у моего кода есть что-то неправильно, потому что Статус кнопки переключения не изменился, поскольку я хочу: \

Введите описание изображения здесь

Это мой код для основной деятельности:

package com.example.task_7; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.ToggleButton; public class MainActivity extends Activity { Button b1; ToggleButton b2; EditText t1,t2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button) findViewById(R.id.login); b2=(ToggleButton) findViewById(R.id.isAdmin); t1=(EditText) findViewById(R.id.userName); t2=(EditText) findViewById(R.id.password); b2.setChecked(false); b2.setEnabled(false); if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123") ){ b2.setEnabled(true); b2.setText("ON"); } b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent i; if(b2.isChecked()) { i = new Intent(getApplicationContext(), Activity_2.class); i.putExtra("UserName", t1.getText().toString()); i.putExtra("Password", t2.getText().toString()); startActivity(i); } else { i = new Intent(getApplicationContext(), ac.class); i.putExtra("UserName", t1.getText().toString()); startActivity(i); } } }); } } 

EDIT Вам нужно добавить setChecked(true) внутри afterTextChanged или ваш код никогда не будет работать, потому что b2.isChecked() всегда будет false .

Это ваша проблема: функция onCreate вызывается только при создании активности.

Когда действие создается, все тексты пустые, поэтому проверка того, заполняется ли TextViews с помощью имени пользователя и пароля администратора, не имеет никакого смысла. Вы должны проверять их каждый раз, когда пользователь нажимает клавишу. Вы можете добиться этого, добавив addTextChangedListener() в TextViews, поэтому функция внутри слушателя вызывается каждый раз, когда текст изменяется:

 b1=(Button) findViewById(R.id.login); b2=(ToggleButton) findViewById(R.id.isAdmin); t1=(EditText) findViewById(R.id.userName); t2=(EditText) findViewById(R.id.password); TextWatcher listener = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123")){ b2.setChecked(true); b2.setEnabled(true); b2.setText("ON"); } } }; t1.addTextChangedListener(listener); t2.addTextChangedListener(listener); 

Вы помещаете эту проверку в onCreate() чтобы она выполнялась только один раз, в начале. Вам нужно создать TextWatcher для ваших EditTexts :

 TextWatcher tw = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void afterTextChanged(final Editable s) { if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123") ){ b2.setEnabled(true); b2.setText("ON"); } } }); t1.addTextChangedListener(tw); t2.addTextChangedListener(tw); 

Таким образом, каждый раз, когда кто-то меняет текст в одном из этих EditText s, условие проверяется.

Конечно, вы можете подумать о чем-то более эффективном, например, создать кнопку принятия, и когда она будет нажата, условие будет проверено. Но это зависит от вас.

Вы проверяете имя пользователя и пароль администратора в oncreate, который вызывается при создании. Чтобы проверить ввод пользователем имени пользователя и пароля, введите этот код внутри ontextchanged из текстов редактирования.

 if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123") ){ b2.setEnabled(true); b2.setText("ON"); }