Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
zxl2006
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 4
#1

Данные из DialogFragment в Activity - Программирование Android

18.01.2015, 14:21. Просмотров 1438. Ответов 6
Метки нет (Все метки)

Всем добрый день, помогите пож. советом. Программировать начал неделю назад поэтому вопрос думаю элементарный, но все-же...
Ниже приведен код Activity (ListView и кнопка вызова диалога) и DialogFragment (EditText и кнопка).
Надо при нажатии кнопки в DialogFragment передать текст из EditText в ListView, закрыть диалог чтобы при следующем вызове диалога EditText был пустой (для ввода след. значения).
Спасибо

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.example.mz;
 
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
 
public class ActivityWork extends Activity implements OnClickListener {
    
    Button btnNewSTR;
    ListView lvWork;
    dialogadd dlg1;
    final String FILENAME = "works";
 
    @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.work);
        
        dlg1 = new dialogadd();
        btnNewSTR = (Button) findViewById(R.id.btnNewSTR);
        btnNewSTR.setOnClickListener(this);
        lvWork = (ListView) findViewById(R.id.lvWork);
 
             // Создаём пустой массив для хранения имен
        final ArrayList<String> works = new ArrayList<String>();
        works.add("Монтаж");
    // Создаём адаптер ArrayAdapter, чтобы привязать массив к ListView
        final ArrayAdapter<String> adapter;
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, works);
    // Привяжем массив через адаптер к ListView
        lvWork.setAdapter(adapter);
              }
    
         @Override
     public void onClick(View v) {
             dlg1.show(getFragmentManager(), "dlg1");
             }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.mz;
    
import android.app.DialogFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
 
public class dialogadd extends DialogFragment {
    
        EditText etAdd; 
  
 
  final String LOG_TAG = "myLogs";
 
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dialogadd, null);
    
    Button button = (Button) v.findViewById(R.id.btnOk);
    button.setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
          Log.d(LOG_TAG, "dialogadd: " + ((Button) v).getText());
          }
    });
    
    return v;
  }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2015, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Данные из DialogFragment в Activity (Программирование Android):

Как передать данные из Fragments в DialogFragment - Программирование Android
Пробовал с помощью Intent , Bundle , но не получалось (либо руки кривые) . Поможете?

Взять данные из xml Activity - Программирование Android
Есть активити, у него есть ImageView. Как достучаться до значения height и width этого ImageView, чтобы получить значение?

Не могу передать данные в другую Activity - Программирование Android
В первой Activity: String table_exam = &quot;position as PS &quot; + &quot;inner join set_exam as SE on PS.id = SE.idposit &quot; + &quot;inner join...

Передать данные из диалога ListView родительскому Activity - Программирование Android
Нашел код в котором создается диалоговое окно, в нем вводятся данные и эти данные передаются родителю. Вот код: res/layout/main.xml ...

Как передать данные в Activity из другого класса - Программирование Android
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this, orgs); GridView gridView = (GridView)...

Передать данные при клике на listview в другое activity - Программирование Android
Подсксжите пожалуйста, как мне при клике на listview заполненный с помощью sdimplecursoradapter передеавать данные в другое activity для...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.01.2015, 15:18 #2
Если неохота заморачиваться с Interface или BroadcastReceiver можно стукнуть активити прямо в лобешник в public void onClick(View v) кнопки

Java
1
2
3
4
((ActivityWork) this.getActivity()).works.add(etAdd.getText().toString());
((ActivityWork) this.getActivity()).adapter.notifyDataChanged();
 
this.dismiss();


Добавлено через 4 минуты
Просмотрел название класса....
0
zxl2006
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 4
18.01.2015, 15:21  [ТС] #3
Сасибо, щас попробую...
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.01.2015, 15:33 #4
Не будет работать - я уже вижу...

Добавлено через 8 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class dialogadd extends DialogFragment {
    
        EditText etAdd; 
  
 
  final String LOG_TAG = "myLogs";
 
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dialogadd, null);
    
    Button button = (Button) v.findViewById(R.id.btnOk);
    button.setOnClickListener(this);
 
    etAdd = (EditText).v.findViewById(R.id.EDITTEXTID) // put proper resourse id for etAdd
       
    return v;
  }
 
   public void onClick(View v) {
          switch (v.getId()){
            case R.id.btnOk:
                        String tmpString = etAdd.getText().toString();
                        if (!tmpString.isEmpty()){
                              ((ActivityWork) this.getActivity()).works.add(tmpString);
                              ((ActivityWork) this.getActivity()).adapter.notifyDataChanged();
            }
            }
    this.dismiss();
   }
}
0
zxl2006
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 4
18.01.2015, 18:43  [ТС] #5
Ничего не работает

Добавлено через 39 минут
Неужели у этой элементарной задачи нет простого, элегантного, короткого, лаконичного и красивого решения?

Добавлено через 2 часа 8 минут
Java
1
2
3
4
                        String tmpString = etAdd.getText().toString();
                        if (!tmpString.isEmpty()){
                              ((ActivityWork) this.getActivity()).works.add(tmpString);
                              ((ActivityWork) this.getActivity()).adapter.notifyDataChanged();
add и notifyDataChanged подчеркивает красным и пишет: The method notifyDataChanged() is undefined for the type Object
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.01.2015, 19:21 #6
Цитата Сообщение от zxl2006 Посмотреть сообщение
Ничего не работает...
The method notifyDataChanged() is undefined for the type Object
Ну, ведь можно посмотреть справку по адаптеру и понять, что такого метода не сществует, а существует notifyDataSetChanged().

Цитата Сообщение от zxl2006 Посмотреть сообщение
Неужели у этой элементарной задачи нет простого, элегантного, короткого, лаконичного и красивого решения?
В 2 строки - НЕТ.

Добавлено через 4 минуты
Правда и этот вариант работать не будет, пока источник данных и адаптер, оба глобального начения, объявляются локалными...

P.S. Каюсь, писал в спешке... Но в педагогических целях - отличній вариант...
0
zxl2006
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 4
18.01.2015, 23:40  [ТС] #7
Для меня глобальная, локальная, и ещёкакаянибудь переменная - мало значимые понятия, нет я примерно понимаю смысл, но все тонкости из высших сфер. Изучать андроид, и вообще программирование начал "вчера". Просто хочу шаг за шагом сделать приложение, чтобы облегчить свою повседневную работу. Читать учебники не моё - метод научного тыка, подсказки и осмысление примеров - это да. Щас начну чёто кудато вставлять, удалять, копировать и т.д. Может что-то и получится. А хотелось просто получить ответ на вопрос.

Добавлено через 3 часа 39 минут
Спасибо за ответы, все получилось.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2015, 23:40
Привет! Вот еще темы с ответами:

ViewPager (Tabbed activity) как добавить данные на сраницы? - Программирование Android
Среда андройд студио. &quot;я создал&quot; проект из коробки tabbed activity, автоматом создалось 2 xml, main отвечает за виджеты ,а второй за...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.01.2015, 23:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru