2012-06-07 15 views
14

Jak mogę otworzyć inny plik xml układu po kliknięciu przycisku w pliku main.xml?Jak otworzyć układ przy kliknięciu przycisku (Android)?

Jeśli więc mam plik main.xml z przyciskiem satynowym kliknij tutaj, a kliknę go, otworzy się plik second.xml (układ).

+0

Proszę nam powiedzieć, co próbowałeś pierwszy. –

+0

Musisz użyć dwóch działań, aby przełączyć się między dwoma układami, a każda czynność obsługuje własny układ, który jest najlepszym sposobem na zrobienie tego. –

Odpowiedz

25

ten tutorial wyjaśnić dokładnie, czego potrzebujesz krok po kroku.

najpierw utworzyć swoje dwa układ:

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> 

drugie Dodaj swoją aktywność do pliku manifestu

<?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); 
      } 

     }); 
    } 
} 

Aby przełączyć się Activity2 trzeba:

  1. Pobiera odwołanie do przycisku z ID Button01 na układ z wykorzystaniem (Button) findViewById(R.id.Button01).

  2. Utwórz detektor OnClick dla przycisku.

  3. I najważniejsza część, tworzy "Intencję", aby rozpocząć kolejną aktywność . Intencją wymaga dwóch parametrów: kontekst oraz nazwę aktywności, które chcemy uruchomić (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 przycisk z xml
-add się onClickListener na nim
-Set nowy układ w przypadku onClick

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

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

}); 

Coś jak to powinno działać ...

+0

WSPANIAŁE! to działało –

+0

jak zrobić 'public void onClick() { MyActivity.setContentView (R.layout.newlayout); } ' w XML –

+0

To nie jest możliwe, najlepszą rzeczą, jaką możesz zrobić, to zdefiniować onClick Listener w XML za pomocą" android: onClick ". Logika tego musi znajdować się w kodzie java. – Thkru

Powiązane problemy