简体   繁体   中英

Switch activities in Android Activities

Whenever I try to click on a button and switch activities, it always gives me the error and stays on the same activity without doing anything:

W/EGL_emulation: eglSurfaceAttrib not implemented

W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xa6d42940, error=EGL_SUCCESS

I thought that it was something in my manifest file, but I can't find anything. I've tried changing many things around and inserting different filters and such and nothing solves this problem.

My code is:

  1. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.example.robertmonks.mytestapp" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name="Main_Activity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="Login_Activity"
            android:label="@string/title_activity_login_"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>
        <activity
            android:name="Register_Activity"
            android:label="@string/title_activity_register_"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>
    </application>
</manifest>
  1. Main_Activity
package com.example.robertmonks.mytestapp;

import android.app.AlertDialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.app.AlertDialog;

public class Main_Activity extends AppCompatActivity {

    android.widget.Button   logoutButton;
    android.widget.EditText password;
    android.widget.EditText username;

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_login_);

        password = (android.widget.EditText) findViewById( R.id.etPassword );
        username = (android.widget.EditText) findViewById( R.id.etEmailAddress );
        logoutButton = (android.widget.Button) findViewById( R.id.blogin);

        logoutButton.setOnClickListener(new android.widget.Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.blogin) {
                    logoutButtonClicked();//move action to new method to keep code clean
                }
            }
        });

    }


    private void logoutButtonClicked()
    {
        android.content.Intent loginintent = new android.content.Intent(Main_Activity.this, Login_Activity.class);
        Main_Activity.this.startActivity(loginintent);
        android.util.Log.d("Logout", "Attempted");
    }

}
  1. Login_Activity
package com.example.robertmonks.mytestapp;

import android.app.AlertDialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.app.AlertDialog;

public class Login_Activity extends AppCompatActivity {

    android.widget.Button   loginButton;
    android.widget.Button   registerButton;
    android.widget.EditText password;
    android.widget.EditText username;

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_login_);

        password = (android.widget.EditText) findViewById( R.id.etPassword );
        username = (android.widget.EditText) findViewById( R.id.etEmailAddress );
        loginButton = (android.widget.Button) findViewById( R.id.blogin);
        registerButton = (android.widget.Button) findViewById( R.id.bregister);

        loginButton.setOnClickListener(new android.widget.Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                if(v.getId() == R.id.blogin) {
                    loginButtonClicked();//move action to new method to keep code clean
                }
                if(v.getId() == R.id.bregister) {
                    registerButtonClicked();
                }
            }
        });

        registerButton.setOnClickListener(new android.widget.Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                if(v.getId() == R.id.bregister) {
                    registerButtonClicked();
                }
            }
        });

    }

    private void loginButtonClicked()
    {

        //startActivity(Main_Activity.class);
        android.util.Log.d("Login", "Attempted");
    }

    private void registerButtonClicked()
    {
        android.content.Intent registerintent = new android.content.Intent(Login_Activity.this, Register_Activity.class);
        Login_Activity.this.startActivity(registerintent);
        android.util.Log.d("New User", "Attempted");
    }

}
  1. Registration_Activity
package com.example.robertmonks.mytestapp;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;

public class Register_Activity extends AppCompatActivity {


    android.widget.Button   createAccountButton;
    android.widget.Button   LoginPageButton;
    android.widget.EditText password1;
    android.widget.EditText password2;
    android.widget.EditText FirstName;
    android.widget.EditText LastName;
    android.widget.EditText EmailAddress;

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_login_);

        password1 = (android.widget.EditText) findViewById( R.id.etFirstPassword );
        password2 = (android.widget.EditText) findViewById( R.id.etSecondPassword );
        FirstName = (android.widget.EditText) findViewById( R.id.etFirstName );
        LastName = (android.widget.EditText) findViewById( R.id.etLastName );
        createAccountButton = (android.widget.Button) findViewById( R.id.blogin);
        LoginPageButton = (android.widget.Button) findViewById( R.id.bregister);
        EmailAddress = (android.widget.EditText) findViewById( R.id.etEmailAddress);

        createAccountButton.setOnClickListener(new android.widget.Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                if(v.getId() == R.id.blogin) {
                    createAccountButtonClicked();//move action to new method to keep code clean
                }
            }
        });

        LoginPageButton.setOnClickListener(new android.widget.Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.bregister) {
                    LoginPageButtonClicked();
                }
            }
        });

    }

    private void createAccountButtonClicked()
    {
        android.util.Log.d("Create Account", "Attempted");
    }

    private void LoginPageButtonClicked()
    {
        android.util.Log.d("Login Page", "Attempted");
        android.content.Intent loginintent = new android.content.Intent(this, Login_Activity.class);
        startActivity(loginintent);
    }

}

For all the buttons, try changing the onclicklistener.
eg For the register button,

 registerButton.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // Perform action on click
         }
     });

I hope this helps. Cheers :)

Your code looks ok... i think problem is your emulator configuration.
only on emulators that have the Use Host GPU setting ticked. Try turning that off, you'll no longer see those warnings (and the emulator will run horribly, horribly slowly..)
Tools > Android > AVD Manager > Edit the virtual device and the Use Host GPU setting is found there.

for more detail.. click

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM