我已经在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);
}
请告知我的代码有什么问题。预先感谢
答案 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()方法问题。
检查。