Pregunta

En mi aplicación para Android, tengo dos clases de actividad. Tengo un botón en el primero y yo quiero mostrar la segunda cuando se hace clic, pero me da un error. Aquí están las clases:

public class FirstActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}

La segunda clase que se debe mostrar cuando se hace clic en el botón, pero nunca lo hace:

public class OrderScreen extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order);

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}

¿Cómo se crea un botón que mostrará la segunda actividad?

¿Fue útil?

Solución

El problema era la OrderScreen Activity no se añadió a la AndroidManifest.xml . Una vez que he añadido como un nodo de aplicación, funcionó correctamente.

<activity android:name=".OrderScreen" />

Otros consejos

Añadir esta línea a su AndroidManifest.xml:

<activity android:name=".OrderScreen" /> 

---- FirstActivity.java -----

    package com.mindscripts.eid;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

public class FirstActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button orderButton = (Button) findViewById(R.id.order);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
            startActivity(intent);
        }
    });

 }
}

--- OrderScreen.java ---

    package com.mindscripts.eid;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;



    public class OrderScreen extends Activity {
@Override



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_class);
    Button orderButton = (Button) findViewById(R.id.end);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

 }
}

--- AndroidManifest.xml ----

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.mindscripts.eid"
  android:versionCode="1"
  android:versionName="1.0">


<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".FirstActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OrderScreen"></activity>
</application>

Utilice este código:

Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();

contexto: consulte contexto actividad actual,

Por favor asegúrese de que ha agregado la actividad en el archivo de manifiesto de Android.

código siguiente para añadir la actividad en el archivo de manifiesto de Android

<Activity name=".SecondActivity">
</Activity>
<activity android:name="[packagename optional].ActivityClassName"></activity>

La simple adición de la actividad que se quiere cambiar a debe ser colocado en el archivo de manifiesto

Cuando se crea ninguna actividad en archivos para android tiene que especificar en AndroidManifest.xml como

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MyCreativityActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


     <activity android:name=".OrderScreen"></activity>


</application>

b1 = (Button) findViewById(R.id.click_me);
        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);

            }
        });

añadir la actividad en su archivo de manifiesto

<activity android:name=".OrderScreen" />

en el manifiesto

<activity android:name=".OrderScreen" />

En el código de Java, donde tienes que colocar el código intención

startActivity(new Intent(CurrentActivity.this, OrderScreen.class);

puede utilizar el contexto de la opinión de que hizo la llamada. Ejemplo:

Button orderButton = (Button)findViewById(R.id.order);

orderButton.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
    Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
    startActivity(intent);
  }

});
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top