textView onclick功能无法以编程方式工作

时间:2019-03-07 16:27:05

标签: android android-layout buttonclick

我已经在textview上实现了onclick功能,试图打开另一个活动视图。但是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);
}

请告知我的代码有什么问题。预先感谢

3 个答案:

答案 0 :(得分:0)

您的TextView具有cursorVisible属性。 cursorVisible应该与EditText一起使用。 删除属性后,尝试使用它。

答案 1 :(得分:0)

看起来像是括号中的问题。

应该是:

    ....
    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);
}

答案 2 :(得分:0)

请检查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问题;它的trySignUp()方法问题。

检查。