studio - Usando Intent en una aplicación de Android para mostrar otra actividad
putextra android para que sirve (11)
En mi aplicación de Android, tengo dos clases de actividad. Tengo un botón en el primero y quiero mostrar el segundo cuando se hace clic, pero aparece 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 creo un botón que muestre la segunda actividad?
---- 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>
Agrega esta línea a tu AndroidManifest.xml:
<activity android:name=".OrderScreen" />
Cuando creas cualquier actividad en el archivo de Android, debes especificarlo 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>
El problema fue que la Activity
OrderScreen no se agregó al AndroidManifest.xml . Una vez que agregué eso como un nodo de aplicación, funcionó correctamente.
<activity android:name=".OrderScreen" />
En el manifiesto
<activity android:name=".OrderScreen" />
En el código de Java donde tienes que colocar el código de intención
startActivity(new Intent(CurrentActivity.this, OrderScreen.class);
Puede utilizar el contexto de la vista que realizó 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);
}
});
Usa este código:
Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();
contexto: referirse al contexto de actividad actual,
Por favor, asegúrese de haber agregado actividad en el archivo de manifiesto de Android.
Código siguiente para agregar actividad en el archivo de manifiesto de Android
<Activity name=".SecondActivity">
</Activity>
agrega la actividad en tu archivo manifiesto
<activity android:name=".OrderScreen" />
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);
}
});
<activity android:name="[packagename optional].ActivityClassName"></activity>
Simplemente agregando la actividad a la que queremos cambiar se debe colocar en el archivo de manifiesto
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);