2013-05-02 4 views
0

J'essaie de faire une application qui ajoute de nouvelles cases à cocher chaque fois que je clique sur un bouton. En outre la nouvelle case à cocher doit prendre le nom du texteditor, que j'ai déjà ajouté. Quelqu'un peut-il m'aider?ANDROID: Ajouter une case après avoir cliqué sur un bouton

Ceci est mon MyAndroidAppActivity

package com.example.myandroidapp; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.CheckBox;  
import android.widget.Toast; 


public class MyAndroidAppActivity extends Activity { 

private CheckBox chkIos, chkAndroid, chkWindows; 
private Button btnDisplay, btn_add; 
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    addListenerOnChkIos(); 
    addListenerOnButton(); 

} 



public void addListenerOnChkIos() { 

    chkIos = (CheckBox) findViewById(R.id.chkIos); 

    chkIos.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (((CheckBox) v).isChecked()) { 
       Toast.makeText(MyAndroidAppActivity.this, 
         "Bro, try Android :)", Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

} 

public void addListenerOnButton() { 

    chkIos = (CheckBox) findViewById(R.id.chkIos); 
    chkAndroid = (CheckBox) findViewById(R.id.chkAndroid); 
    chkWindows = (CheckBox) findViewById(R.id.chkWindows); 
    btnDisplay = (Button) findViewById(R.id.btnDisplay); 

    btnDisplay.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      StringBuffer result = new StringBuffer(); 
      result.append("IPhone check : ") 
        .append(chkIos.isChecked()); 
      result.append("\nAndroid check : ").append(
        chkAndroid.isChecked()); 
      result.append("\nWindows Mobile check :").append(
        chkWindows.isChecked()); 

      Toast.makeText(MyAndroidAppActivity.this, result.toString(), 
        Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 

} 

et c'est main.xml

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



    <EditText 

    android:id="@+id/edit_message" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="@string/edit_message" /> 

    <requestFocus /> 




    <Button 
     android:id="@+id/btn_add" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/button_add" /> 

<CheckBox 
    android:id="@+id/chkIos" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/chk_ios" /> 

<CheckBox 
    android:id="@+id/chkAndroid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="true" 
    android:text="@string/chk_android" /> 

<CheckBox 
    android:id="@+id/chkWindows" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/chk_windows" /> 

<Button 
    android:id="@+id/btnDisplay" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_display" /> 

+0

Qu'est-ce qui vous pose problème? Vous devez être plus précis dans ce que le problème est, sinon les gens ne vont probablement pas essayer et vous aider – Zyber

+0

si vous avez une case à cocher fixe ... puis utilisez la visibilité .. –

+0

Votre question n'est pas très claire. Vous devez expliquer brièvement tout problème auquel vous êtes confronté maintenant. Essayez de le mettre à jour. – Dhasneem

Répondre

0

Vous pouvez ajouter à votre mise en page par programmation après avoir été gonflé. Ajouter un identifiant à votre LinearLayout:

android:id ="@+id/layout" 

Puis, en OnCreate (après votre code existant), obtenir une référence et ajouter des contrôles que vous le souhaitez. Par exemple:

LinearLayout ll = (LinearLayout)findViewById(R.id.layout); 

CheckBox cb = new CheckBox(this); 
int lHeight = LinearLayout.LayoutParams.MATCH_PARENT; 
int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT; 

ll.addView(cb, new LinearLayout.LayoutParams(lHeight, lWidth)); 
setContentView(ll); 

Vous devrez réellement déplacer ce code dans le gestionnaire d'événements click de votre bouton, bien sûr. Si vous voulez pouvoir ajouter plus d'une case de manière dynamique comme ceci, je pense que vous devrez les gérer dans un tableau. Où vous dites "case à cocher doit prendre le nom du texteditor" Je suppose que c'est le texte à afficher par rapport à la case à cocher, auquel cas vous devrez créer un TextView en même temps et définir son texte à partir de votre EditText. Il y a ensuite le problème de ce qui se passe lors d'un changement de configuration (c'est-à-dire, changement de l'orientation du dispositif). Cela recrée l'activité pour que vos ajouts dynamiques soient perdus, sauf si vous les stockez dans onSaveInstanceState(), puis les restaurez dans onRestoreInstanceState() à l'aide de SharedPreferences.

J'espère que cela vous aidera à démarrer.

Questions connexes