Функциональность TextView onclick не работает программно

#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().

Проверьте это.