Android: cómo cambiar el diseño en el botón de clic?

Tengo que seguir el código para seleccionar el diseño en el botón de clic.

View.OnClickListener handler = new View.OnClickListener(){ public void onClick(View v) { switch (v.getId()) { case R.id.DownloadView: // doStuff setContentView(R.layout.main); break; case R.id.AppView: // doStuff setContentView(R.layout.app); break; } } }; findViewById(R.id.DownloadView).setOnClickListener(handler); findViewById(R.id.AppView).setOnClickListener(handler); 

Cuando hago clic en el botón "AppView", el diseño cambia, pero cuando hago clic en el botón "DownloadView", no pasa nada.

Este enlace dice que tengo que comenzar una nueva actividad.

Pero no sé cómo usar el código de intención para iniciar una nueva actividad, se agregará un nuevo archivo?

EDIT: Tengo mi código en la nueva actividad:

 package com.example.engagiasync; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; public class AppView extends Activity implements OnClickListener{ @Override public void onCreate(Bundle savedInstanceState){ setContentView(R.layout.app); TextView tv = (TextView) this.findViewById(R.id.thetext); tv.setText("App View yo!?\n"); } @Override public void onClick(View v) { // TODO Auto-generated method stub } } 

Pero no funciona, se cierra la fuerza, el logcat dice: Introduzca aquí la descripción de la imagen

  Button btnDownload = (Button) findViewById(R.id.DownloadView); Button btnApp = (Button) findViewById(R.id.AppView); btnDownload.setOnClickListener(handler); btnApp.setOnClickListener(handler); View.OnClickListener handler = new View.OnClickListener(){ public void onClick(View v) { if(v==btnDownload){ // doStuff Intent intentMain = new Intent(CurrentActivity.this , SecondActivity.class); CurrentActivity.this.startActivity(intentMain); Log.i("Content "," Main layout "); } if(v==btnApp){ // doStuff Intent intentApp = new Intent(CurrentActivity.this, ThirdActivity.class); CurrentActivity.this.startActivity(intentApp); Log.i("Content "," App layout "); } } }; 

Nota: y luego debe declarar todas sus actividades en el manifiesto de esta manera:

 <activity android:name="SecondActivity" ></activity> <activity android:name="ThirdActivity" ></activity> 

EDIT: actualizar esta parte del Código :):

 @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);// Add THIS LINE setContentView(R.layout.app); TextView tv = (TextView) this.findViewById(R.id.thetext); tv.setText("App View yo!?\n"); } 

Nota: compruebe esto (enlace roto) Tutorial sobre cómo cambiar entre actividades .

Me gustaría añadir un android:onClick en el diseño y luego cambiar el diseño de la actividad.

Así que en el diseño

 <ImageView (Other things like source etc.) android:onClick="changelayout" /> 

A continuación, en la actividad, añada lo siguiente:

 public void changelayout(View view){ setContentView(R.layout.second_layout); } 

Creo que lo que estás tratando de hacer debe hacerse con múltiples Actividades. Si estás aprendiendo Android, entender las actividades es algo que vas a tener que enfrentar. Tratar de escribir una aplicación completa con una sola actividad terminará siendo mucho más difícil. Lea este artículo para empezar, entonces usted debe terminar con algo más como esto:

 View.OnClickListener handler = new View.OnClickListener(){ public void onClick(View v) { switch (v.getId()) { case R.id.DownloadView: // doStuff startActivity(new Intent(ThisActivity.this, DownloadActivity.class)); break; case R.id.AppView: // doStuff startActivity(new Intent(ThisActivity.this, AppActivity.class)); break; } } }; findViewById(R.id.DownloadView).setOnClickListener(handler); findViewById(R.id.AppView).setOnClickListener(handler); 

Usted quería cambiar el diseño en tiempo de ejecución en el botón de clic. Pero eso no es posible y como se ha indicado correctamente anteriormente, es necesario reiniciar la actividad. Usted se encontrará con un problema similar cuando plan de u en cambiar el tema basado en la selección del usuario, pero no se refleja en tiempo de ejecución. Tendrá que reiniciar la actividad.

El logcat muestra el error, debe llamar a super.onCreate(savedInstanceState) :

 @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //... your code } 

Primero sugeriría poner un registro en cada caso de su interruptor para cerciorarse de que su código está siendo llamado.

Entonces comprobaría que las disposiciones son realmente diferentes.

Sé que voy a llegar tan tarde, pero qué diablos.

Tengo casi el mismo código que Kris, usando sólo una actividad, pero con 2 diseños / vistas diferentes, y quiero cambiar entre los diseños a voluntad.

Como una prueba, he añadido 2 opciones de menú, cada uno cambia la vista:

 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.item1: setContentView(R.layout.main); return true; case R.id.item2: setContentView(R.layout.alternate); return true; default: return super.onOptionsItemSelected(item); } } 

Tenga en cuenta que tengo una clase de actividad. Esto funciona perfectamente. Así que no tengo idea de por qué la gente está sugiriendo el uso de diferentes Actividades / Intentes. Tal vez alguien puede explicar por qué mi código funciona y Kris no lo hizo.

Es muy simple, solo haz esto:

 t4.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { launchQuiz2(); // TODO Auto-generated method stub } private void launchQuiz2() { Intent i = new Intent(MainActivity.this, Quiz2.class); startActivity(i); // TODO Auto-generated method stub } }); 
  • Ventana de superposición del sistema Android
  • ¿Proguard trabaja para ocultar las constantes de cadena estáticas?
  • Android Studio - ProGuard IOException Duplicate Zip Entry
  • Android: cómo detectar si la cámara parpadea
  • Loader no se inicia después de llamar a initLoader ()?
  • Android: Temporizador de cuenta atrás, por ejemplo, de 10:00 a 00:00? Utilizando OnclickListener a TextView?
  • Mantenga los nombres de los métodos de interfaz internos en proguard
  • Eclipse JUNO + ADT 23.0.2 Recursos $ NotFoundException
  • ¿Alguien tiene puntos de referencia (código y resultados) que comparan el rendimiento de las aplicaciones de Android escritas en Xamarin C # y Java?
  • Android con ZXing genera código QR
  • Cómo obtener cadena de JSONObject sin nombre específico
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.