android onClick не работает

Код хорошо работал в других макетах, но в других нет.

макет XML:

<Button
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_text="register"
        android_id="@+id/welcome_register"
        android_background="@android:color/holo_green_dark"
        android_textColor="#ffffff"
        android_textSize="25sp"
        android_onClick="register_Click" />

Активность:

package il.co.smartchip.hobby;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        getSupportActionBar().hide();
    }

    public void start_login(View view) {
        //TODO log in
    }

    public void register_Click(View view) {
        Intent intent = new Intent(this, RegisterActivity.class);
        startActivity(intent);
    }

Я попробовал несколько вещей, но безуспешно. У вас есть какие-либо идеи, почему это не работает?

2 ответа

  1. Удалить onclick на xml

    <Button
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_text="register"
        android_id="@+id/welcome_register"
        android_background="@android:color/holo_green_dark"
        android_textColor="#ffffff"
        android_textSize="25sp"
        />
    

    Init вашей кнопки, как это

    package il.co.smartchip.hobby;
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    public class LoginActivity extends AppCompatActivity {
    
    private Button myButton;
    private Activity thisActivity=this;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        getSupportActionBar().hide();
        myButton=(Button)findViewById(R.id.welcome_register);
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(thisActivity, RegisterActivity.class);
                startActivity(intent);
            }
        });
    }}
    
  2. В вашем случае вам нужно Intent i = new Intent(LoginActivity.this, RegisterActivity.class);.

    LoginActivity.this указывает на экземпляр действия, в котором вы находитесь в данный момент, и вы используете его при работе с динамическим внутренним классом, как в вашем случае.

    this is для вашего текущего объекта.

    Я не очень хороший учитель, надеюсь, вы это понимаете.