Добавление и удаление динамических кнопок. Из одного действия в другое действие в Android при нажатии кнопки из предыдущего нажатия кнопки действия.

Я хочу разработать подобное приложение (ссылка ниже) Как создать кнопку динамически в android? Но в то же время я хочу отобразить это в другом действии, а не в том же действии. есть 2 текста редактирования: 1) Имя кнопки, которое будет создано. 2) Адрес назначения (для отправки сообщения о создании новой кнопки). текст которого передается другому действию для создания новой кнопки.

когда я написал

 public void onClick(View v) {    
            // TODO Auto-generated method stub    
        final Context context1=this;    
               if(v.getId()==R.id.button4){    
     LinearLayout l1 = (LinearLayout) findViewById(R.id.layout);      
  // R.id.layout is the layout id of the xml file for the 2nd activity.    
    Intent intent1 = new Intent(context1,PCode.class);    
    Button b = new Button(this);    
    l1.addView(b);    
    startActivity(intent1);    

 }        

Действие не переходит ко второму действию, и программа завершается. Я могу создать новую кнопку при выполнении того же действия. Пожалуйста, помогите.


person Ssinha    schedule 12.06.2013    source источник
comment
Как вы можете создать макет Activity B в Activity A? Это ужасно.   -  person Parijat Bose    schedule 12.06.2013


Ответы (2)


Вы можете передать всего 3 сообщения через намерение для каждой кнопки 1) Имя кнопки, которое будет создано. 2) Адрес назначения (для отправки сообщения о создании новой кнопки). 3) Действие кнопки (добавить/удалить). В новом действии вы обрабатываете действие кнопки, используя наше 3-е сообщение о намерениях, то есть действие кнопки (добавить/удалить), какое действие они хотят выполнить. В то время как в новом действии вы можете обрабатывать код ниже

  boolean isAddButton = getIntent().getBooleanExtra("ButtonAction", false);
            if(isAddButton){
             Button myButton = new Button(this);
             myButton.setText("Add Me");
             LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
             LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,                LayoutParams.WRAP_CONTENT);
             ll.addView(myButton, lp);
            }else{
             Button myButton = new Button(this);
             myButton.setText("Remove Me");

             LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
             LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,                LayoutParams.WRAP_CONTENT);
             ll.removeView(myButton, lp);
       }
person chaitanya    schedule 12.06.2013
comment
У меня уже есть этот макет для действия 2, и кнопка создается при нажатии из действия 1 ‹?xml version=1.0 encoding=utf-8?› ‹LinearLayout xmlns:android=schemas.android.com/apk/res/android android:layout_width=fill_parent android:layout_height=fill_parent android:id=@+id/layout › ‹LinearLayout android:weightSum=100› ‹TextView android:layout_weight=30/› ‹ImageButton android:id=@+id/IButton2 /› ‹/LinearLayout› ‹ScrollView android:id=@+id/scrl› ‹LinearLayout android:id= @+id/layout2/› ‹/ScrollView›‹/LinearLayout› - person Ssinha; 14.06.2013

В первом действии onClick отправьте данные с помощью Intent:

intent = new Intent(this, PCode.class);
        intent.putExtra("EXTRA_BTN_NAME", editText.getText());
        intent.putExtra("EXTRA_WHERE", where);
        startActivity(intent);

В новом действии вы должны получить данные с помощью

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

    Intent intent = getIntent();
    String btnName = intent.getStringExtra("EXTRA_BTN_NAME");
    where= intent.getStringExtra("EXTRA_WHERE");

LinearLayout l1 = (LinearLayout) findViewById(R.id.layout);     
Intent intent1 = new Intent(context1,PCode.class);    
Button b = new Button(this);    
b.SetText(btnName);
//TODO - use the "where" parameter
l1.addView(b);
person baronS    schedule 12.06.2013
comment
@baranS в 1-м действии у меня есть: 2 редактирования текста и 1 кнопка, я хочу взять значение 1-го editText, которое будет использоваться как новая кнопка (android: text) [act1: MyAct,act2:PCode,xml1 linearlayout_id:layout1, xml2 linearlayout_id: layout2]. Будет ли работать приведенный выше код (что такое Consts.Extra_BTN_NAME,btnName) - person Ssinha; 12.06.2013
comment
Я отредактировал ответ: используйте editText.getText() и отправьте его с дополнительным намерением. Consts.Extra_BTN_NAME - это просто Const со строкой, я заменил ее в ответе - person baronS; 12.06.2013
comment
Extra_WHERE будет местом следующего действия (PCode.class)? - person Ssinha; 12.06.2013
comment
Большое спасибо Я попробовал приведенный выше код, и он работает... можно ли добавить кнопки фиксированного размера, состоящие из 3 кнопок в ряду? Как я должен настроить выравнивание? - person Ssinha; 12.06.2013
comment
Возможно. Сначала убедитесь, что LinearLayout имеет android:orientation=Horizontal. LayoutParams lp = новый LinearLayout .LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); б.setLayoutParams (лп); - person baronS; 12.06.2013
comment
Сначала я попробовал код, который вы дали. кнопка создается, но когда я возвращаюсь к предыдущему действию и повторяю тот же процесс, первая динамическая кнопка становится недоступной. например: 1-й раз: я добавил ABC, затем я возвращаюсь и добавляю XYZ во 2-й раз, существует только кнопка XYZ, а не ABC.. Можете сказать мне точно, так как я новичок в Android. - person Ssinha; 13.06.2013
comment
Вы каждый раз создаете новую кнопку. Если вам нужно их сохранить, вы должны сохранить массив строк с именами и местоположениями в настройках. Если вам нужна дополнительная помощь с настройками, дайте мне знать. Поскольку ответ решил первоначальный вопрос, я был бы очень признателен, если бы вы приняли ответ. - person baronS; 13.06.2013
comment
Я был бы очень признателен, если бы вы могли помочь. Поскольку я новичок в этом, вы также можете предоставить учебник (книгу). Ниже приведена ссылка, в которой указано, как должно работать мое приложение, но все выполняется динамически. Пожалуйста, помогите. Я искал здесь и там за последние 3 дня Буду благодарен вам, если вы можете помочь. Я пробовал добавлять один макет за другим, но отображается только первый макет. **Пожалуйста, перейдите по ссылке ниже**[stackoverflow.com/questions/17082900/ - person Ssinha; 13.06.2013
comment
![Мое приложение][1] [1]: i.stack.imgur.com/9MD65. png мое приложение работает таким образом. Пожалуйста, помогите или предложите прочитать PDF-файл, чтобы решить эту проблему. У меня уже есть макет, как показано ниже, могу ли я динамически добавлять макеты в id = layout2, который находится в pcode.xml - person Ssinha; 13.06.2013
comment
Я отвечу на другой вопрос в его собственном месте. Пожалуйста, рассмотрите возможность принятия этого ответа, и, надеюсь, мы сможем пообщаться - person baronS; 13.06.2013
comment
![Мое приложение][1] [1]: i.stack.imgur.com/9MD65.png это то, что я не хотел создавать, добавлять и удалять кнопки. Я выполнил 4 действия: 1) домашняя страница, 2) поля редактирования для информации и состоят из одной кнопки, 3) для создания кнопки, 4) удаление кнопки, я новичок в StackOvrflow, пожалуйста, скажите мне, как мы сможем общаться, чтобы я могу понять тебя .@baronS - person Ssinha; 14.06.2013
comment
Вам нужно больше репутации, чтобы общаться. Я рассмотрю другой вопрос на своем месте - person baronS; 16.06.2013