【问题标题】:Switch activities in Android Activities在 Android Activity 中切换 Activity
【发布时间】:2015-10-18 15:55:40
【问题描述】:

每当我尝试单击按钮并切换活动时,它总是给我错误并停留在相同的活动上而不做任何事情:

W/EGL_emulation:eglSurfaceAttrib 未实现

W/OpenGLRenderer:无法在表面 0xa6d42940 上设置 EGL_SWAP_BEHAVIOR,错误=EGL_SUCCESS

我认为这是我的清单文件中的某些内容,但我找不到任何内容。我试过改变很多东西并插入不同的过滤器等等,但没有任何东西可以解决这个问题。

我的代码是:

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

【问题讨论】:

  • 问题出在点击哪个按钮上?
  • 它会在启动时打开登录页面,所以每当我单击 RegisterButtonClicked() 时,它都会调用该方法,因为它会记录我想要的内容,但它会给出错误并保持相同的活动.

标签: java android


【解决方案1】:

对于所有按钮,请尝试更改 onclicklistener。
例如对于注册按钮,

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

我希望这会有所帮助。干杯:)

【讨论】:

    【解决方案2】:

    您的代码看起来不错...我认为问题在于您的模拟器配置。
    仅在勾选了 Use Host GPU 设置的模拟器上。尝试将其关闭,您将不再看到这些警告(并且模拟器会运行得非常慢……)
    Tools > Android > AVD Manager > Edit the virtual device 和 Use在那里可以找到主机 GPU 设置。

    更多详情..click

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多