-1
votes

Trois mises en page qui font la même chose pour une activité

Assez nouveau au jeu de codage et souhaitez savoir si et comment je peux faire ce qui suit dans Android Studio. J'ai une activité pour un type de jeu et trois mises en page: layout_main , layout_opt1 , layout_opt2 . Ils font tous la même chose, il suffit de concevoir différents designs afin que l'utilisateur puisse choisir le meilleur pour son besoin ou sa préférence.

L'utilisateur peut basculer entre eux sur le bouton Appuyez sur le bouton, mais mon problème est que lorsque je passe de l'un à l'un des autres, il n'affiche pas les données qui se trouvaient dans la dernière, même si j'utilise les mêmes identifiants pour le Les champs et aimeraient savoir comment puis-je éviter que cela se produise.

Malheureusement, je n'ai aucun code pour cela maintenant parce que j'ai supprimé le projet de commencer à partir de zéro en raison d'autres problèmes.


0 commentaires

3 Réponses :


1
votes

Vous avez dit que les mises en page font la même chose, mais ont des conceptions différentes. Pouvez-vous s'il vous plaît exprimer comment sont différentes conceptions? (Comme différents boutons ou arrière-plans ou autre, comme vous l'avez dit, c'est un jeu) Il est difficile de suggérer quelque chose qui ne comprend pas le concept clairement.

dépend de la manière dont vous changez les mises en page. Vous pouvez utiliser des fragments ou essayer de définir la visibilité (afficher / disparaître) des widgets conservant des données et des fonctionnalités de la même activité persistantes. Mais ne peut pas dire avec certitude sans assez d'informations. Merci.


1 commentaires

Chaque mise en page comporte exactement les mêmes éléments, mais ils sont regroupés d'une manière différente. Par exemple, j'ai quelque chose comme un panneau de score que peut être au bas de l'écran ou au milieu d'un séparateur.



1
votes

Si vous souhaitez utiliser 3 dispositions différentes pour un type d'utilisation d'activité comme 1,2,3.

  1. Layout_main.xml
  2. Layout_opt1.xml
  3. Layout_opt2.xml

    et avant le type de vérification de la vue SetContent, puis SinseContentView Définissez la mise en page et les méthodes d'appel souhaitées pour cette mise en page spécifique à l'aide de la vérification de type.

    Deuxième tour

    Vous pouvez utiliser des fragments pour une meilleure gestion du code.

    Troisième tour

    Utilisez pour ajouter une vue différente au fichier XML unique. et définir la visibilité à cette disposition selon les types.

    quatrième tour

    Utiliser contrainteset pour une meilleure optimisation et une meilleure gestion de la mémoire.


0 commentaires

3
votes

C'est le moyen le plus rentable de faire ce que vous voulez faire. Cette méthode enregistre la mémoire et ne force pas l'android à repousser la mise en page complète à l'écran, ce qui permet de gagner beaucoup de processus ainsi que de la mémoire.

MainAlacit.java strong> P>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="8dp"
    android:onClick="changeLayout"
    android:text="Change Layout"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="BTN A"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline" />

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline"
    app:srcCompat="@android:drawable/btn_star_big_on" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:text="BTN B"
    app:layout_constraintBottom_toBottomOf="@+id/button2"
    app:layout_constraintEnd_toStartOf="@+id/imageView"
    app:layout_constraintStart_toEndOf="@+id/button2"
    app:layout_constraintTop_toTopOf="@+id/imageView" />

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.3" />
</android.support.constraint.ConstraintLayout>


1 commentaires

Une autre question liée à cela. L'une des mises en page ne devrait pas changer de rotation du téléphone. Basé sur ce que j'ai trouvé dans d'autres messages, l'orientation de l'écran est empêchée du manifeste. Existe-t-il une ligne que je peux inclure dans le XML de ma mise en page ou dois-je empêcher l'orientation de changer de manière programmative lorsque l'utilisateur passe à cette mise en page spécifique?