2013-05-02 2 views
0

Я пытаюсь сделать приложение, которое добавляет новые флажки, когда я нажимаю кнопку. Кроме того, новый флажок должен иметь имя от текстового редактора, который я уже добавил. Может ли кто-нибудь мне помочь?ANDROID: Добавить флажок после нажатия кнопки

Это мой 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(); 

     } 
    }); 

} 

} 

и это 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

С чем вы столкнулись? Вы должны быть более конкретными в том, что проблема, иначе люди, скорее всего, не попробуют и не помогут вам – Zyber

+0

, если у вас установлен флажок ... затем используйте видимость. –

+0

Ваш вопрос не очень ясен. Вы должны кратко объяснить, с какими проблемами вы столкнулись сейчас. Попробуйте обновить его. – Dhasneem

ответ

0

Вы можете добавить ваш макет программно после его завышения. Добавить идентификатор к вашему LinearLayout:

android:id ="@+id/layout" 

Затем в OnCreate (после того, как существующий код), получить ссылку на него и добавить элементы управления, как вы хотите. Например:

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

Вы на самом деле нужно, чтобы переместить этот код в обработчик события щелчка на кнопке конечно. Если вы хотите иметь возможность добавлять более одного флажка динамически, как это, я думаю, вам нужно будет управлять ими в массиве. Если вы говорите, что флажок должен содержать имя из текстового редактора, я предполагаю, что это текст, который следует показывать против флажка, и в этом случае вам нужно будет создать TextView одновременно с ним и установить его текст из вашего EditText.

Тогда возникает вопрос, что происходит при изменении конфигурации (т. Е. Изменении ориентации устройства). Это воссоздает активность, поэтому ваши динамические дополнения будут потеряны, если вы не сохраните их в onSaveInstanceState(), а затем восстановите их в onRestoreInstanceState(), используя SharedPreferences.

Я надеюсь, что это поможет вам начать работу.

 Смежные вопросы

  • Нет связанных вопросов^_^