Pytanie Jak połączyć widok układu z działaniem


W moim głównym widoku mam:

public class PlayersActivity extends Activity {
    ViewFlipper flipper;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playercontainer);
        flipper = (ViewFlipper) findViewById(R.id.flipper);
    }
}

z tym widokiem:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flipper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include android:id="@+id/first"  layout="@layout/first" />
    <include android:id="@+id/second"  layout="@layout/playerdetailsview" />
</ViewFlipper>

Prawidłowo wyświetla pierwszy widok, ale chcę, aby był on połączony z klasą java, więc utworzyłem klasę FirstActivity, w której mogę kontrolować wszystkie moje komponenty w pierwszym widoku ale jak dołączyć układ first.xml do klasy java FirstActivity?


25
2018-02-04 10:09


pochodzenie


PlayersActivity już jest twoją klasą java do kontrolowania twoich komponentów. Jak klasa FirstActivity różni się od PlayersActivity? - RickNotFred
podzielić moją funkcjonalność w różnych klasach, więc mogę ponownie użyć tego konkretnego układu w innych widokach - Andy Jacobs


Odpowiedzi:


Powiedz, że masz nowy plik xml foo.xml:

  1. Położyć foo.xml plik w twoim res/layout informator.
  2. W twoim nowym korzystaniu z klasy setContentView(R.layout.foo);
  3. Określ swoją nową klasę w swojej plik manifestu.

Zobacz także temat na deklarowanie układu.


42
2018-02-04 13:22



Krok 3 zakłada, że ​​twoja klasa jest aktywnością. - RickNotFred
dodałem <activity android: name = "FirstActivity"> </ activity> w węźle aplikacji (i postępowałem zgodnie z innymi krokami), ale nadal nie wywołuje klasy, czy definiuję ją poprawnie w manifeście? - Andy Jacobs
Musisz podać pełną nazwę. Zakładając, że klasa znajduje się w tym samym pakiecie, co twój manifest, możesz skrócić, określając jako <activity android: name = ". FirstActivity"> </ activity> (zwróć uwagę na ".") - RickNotFred
@RickNotFred: Zrobiłem to wszystko jak wspomniano. ale wciąż jest problem na linii setContentView(R.layout.FirstActivity);  FirstActivity nie jest rozwiązany lub nie jest polem. - Mohammad Faisal


1) Utwórz plik xml (np foo.xml).
2) Put foo.xml w res/layout informator.
3) Edytuj foo.xml i wstaw trochę kodu układu androida i zapisz go. na przykład.,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent" 
              android:orientation="vertical" >
    <ViewFlipper android:id="@+id/viewFlipper1" 
                 android:layout_width="match_parent" 
                 android:layout_height="wrap_content"></ViewFlipper>
</LinearLayout>

4) W swojej nowej klasie działalności włóż

setContentView(R.layout.foo);

Do tworzenia działania zobacz tę odpowiedź

Domyślam się, że problem z plikiem xml jest taki, że nie określono żadnego layoutu działania.


6
2017-10-21 07:48





Nie tak trudno połączyć 2 układy po prostu:

@Override
    public void onClick(View args0) {
    setContentView(R.layout.aardelayout);
}

3
2017-12-26 16:21





Zmień nazwę z FirstActivity na firstactivity. Układ nie akceptuje czapek, miałem do czynienia z tym samym problemem.


0
2018-02-06 11:10