2012-06-07 11 views
14

¿Cómo puedo abrir otro archivo xml de diseño cuando hago clic en un botón en el archivo main.xml?Cómo abrir el diseño en el botón clic (android)

así que si tengo main.xml que tiene un botón sying haga clic aquí y lo hago clic, se abre el archivo second.xml (diseño).

+0

favor nos dice lo que ha intentado en primer lugar. –

+0

Tiene que usar dos actividades para cambiar entre dos diseños, cada actividad maneja su propio diseño, esa es la mejor manera de hacerlo. –

Respuesta

25

Este tutorial explique exactamente lo que necesita paso a paso.

En primer lugar crear su diseño de dos:

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" > 

    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:text="This is Activity 1" /> 

     <Button android:text="Next" 
     android:id="@+id/Button01" 
     android:layout_width="250px" 
      android:textSize="18px" 
     android:layout_height="55px"> 
    </Button>  

</LinearLayout> 

second.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" > 

    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:text="This is Activity 2" /> 

     <Button android:text="Previous" 
     android:id="@+id/Button02" 
     android:layout_width="250px" 
      android:textSize="18px" 
     android:layout_height="55px"> 
    </Button>  

</LinearLayout> 

Segunda Añadir su actividad para el archivo de manifiesto

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.rr" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".Activity1" 
        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=".Activity2"></activity> 
    </application> 
    <uses-sdk android:minSdkVersion="3" /> 
</manifest> 

Activity1.java

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

public class Activity1 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button next = (Button) findViewById(R.id.Button01); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), Activity2.class); 
       startActivityForResult(myIntent, 0); 
      } 

     }); 
    } 
} 

Para cambiar a Actividad2 usted tiene que:

  1. obtiene una referencia al botón con ID Button01 en el diseño utilizando (Button) findViewById(R.id.Button01).

  2. Cree un detector OnClick para el botón.

  3. Y la parte más importante, crea un "Intento" para iniciar otra actividad . La intención necesita dos parámetros: un contexto y el nombre del la actividad que queremos empezar (Activity2.class)

Activity2.java

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

public class Activity2 extends Activity { 

    /** Called when the activity is first created. */ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 

     Button next = (Button) findViewById(R.id.Button02); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent intent = new Intent(); 
       setResult(RESULT_OK, intent); 
       finish(); 
      } 

     }); 
    } 
2

-Inflate el botón del xml
-add un OnClickListener en él
-SET un nuevo diseño en el evento de clic

Button btn = (Button) findViewById(R.id.myButton); 
btn.setOnClickListener(new OnClickListener(){ 

@Override 
public void onClick(View v) 
{ 
    MyActivity.setContentView(R.layout.newlayout); 
} 

}); 

Algo como esto debería funcionar ...

+0

¡EXCELENTE! esto funcionó –

+0

cómo lo hago 'public void onClick() { MyActivity.setContentView (R.layout.newlayout); } ' en XML –

+0

que yo sepa no es posible, lo mejor que podría hacer es definir el onClick Listener en XML usando "android: onClick". La lógica de esto tiene que ser en el código de java. – Thkru

Cuestiones relacionadas