#android #android-layout #buttonclick
#Android #android-макет #buttonclick
Вопрос:
Я реализовал функциональность onclick в textview, пытается открыть другое представление активности. Но функциональность OnClick не работает в textview. Вот мой код:
login.xml
<TextView
android:id="@ id/link_signup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:cursorVisible="true"
android:gravity="center"
android:text="@string/signUp_text"
android:textSize="18sp" />
LoginActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// Set up the login form.
mEmailView = (AutoCompleteTextView) findViewById(R.id.username);
populateAutoComplete();
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});
Button mEmailSignInButton = (Button) findViewById(R.id.login_button);
mEmailSignInButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
attemptLogin();
}
});
final TextView mSignUpButton = (TextView) findViewById(R.id.link_signup);
mSignUpButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
mSignUpButton.setTextColor(Color.RED);
attemptSignUp(view);
}
} );
mLoginFormView = findViewById(R.id.login_form);
mProgressView = findViewById(R.id.login_progress);
}
public void attemptSignUp(View view){
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
Пожалуйста, сообщите, что не так в моем коде. Заранее спасибо
Комментарии:
1. Вызывается ли ваш
onClick()
метод?2. @DavidWasser Нет, мой
onClick()
метод не вызывается, поскольку textcolor не изменился3. Пожалуйста, опубликуйте полное содержимое
login.xml
макета.
Ответ №1:
Ваш TextView имеет атрибут cursorVisible. cursorVisible следует использовать с EditText. Попробуйте, работает ли это после удаления атрибута.
Ответ №2:
Похоже, проблема с вашими скобками.
Это должно быть:
....
final TextView mSignUpButton = (TextView) findViewById(R.id.link_signup);
mSignUpButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
mSignUpButton.setTextColor(Color.RED);
attemptSignUp(view);
}
} );
}
public void attemptSignUp(View view){
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
То есть не определяйте метод внутри другого метода, предполагая, что это то, что вы сделали.
Если нет, это означает, что вы обратились к TextView
и установили onClickListener
внешний метод. Следовательно, она никогда не выполняется. Попробуйте переместить ее внутрь onCreate
метода.
public void onCreate(Bundle savedInstanceState){
final TextView mSignUpButton = (TextView) findViewById(R.id.link_signup);
mSignUpButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
mSignUpButton.setTextColor(Color.RED);
attemptSignUp(view);
}
} );
}
public void attemptSignUp(View view){
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
Комментарии:
1. Я уже создал
OnClickListener
метод вOnCreate
методе2. В этом случае ваш,
attemptSignUp
вероятно, также находится вonCreate
, основываясь на расставленных вами скобках. Удалите ее.3. В таком случае, пожалуйста, обновите свой вопрос правильным кодом.
4. Я обновил свой вопрос. Пожалуйста, проверьте и дайте совет.
5. Нет, это не работает при двойном щелчке, даже кнопка входа в систему не работает
Ответ №3:
Пожалуйста, проверьте журнал в OnClickListener ,
final TextView mSignUpButton = (TextView) findViewById(R.id.link_signup);
mSignUpButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Log.e("checking","within on click function");
mSignUpButton.setTextColor(Color.RED);
attemptSignUp(view);
}
} );
public void attemptSignUp(View view){
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
В этом случае распечатайте его журнал в logcat,
это не проблема с OnClickListener; проблема с методом attemptSignUp().
Проверьте это.