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

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

Войти
Регистрация
Восстановить пароль
 
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
#1

Не обновляется содержимое TableLayout в Fragment - Android

18.04.2015, 20:20. Просмотров 308. Ответов 8
Метки нет (Все метки)

Здравствуйте. У меня есть фрагмент, в котором располагается таблица TableLayout с перечнем издательств. Также есть кнопка "Добавить новое издательство". При клике на эту кнопку открывается окно для добавления в БД нового значения. При закрытии этого окна необходимо что бы содержимое таблицы было актуальным и содержало новое значение.
Проблема: отображение обновленной таблицы происходит только при переходе на другой фрагмент (вкладку) и возвращении обратно.
Код:
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
public class PublishersActivity extends Fragment {
    View rootView;
 
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_publishers, container, false);
        //******
            fab.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Toast.makeText(rootView.getContext(), "OnClcInPublishers", Toast.LENGTH_LONG).show();
                startActivity(new Intent(rootView.getContext(), AddPublisherActivity.class));
 
            }
        });
        showPublishers(rootView);
 
        return rootView;
    }
 public static void showPublishers(View v){
 
        TableLayout tableLayout = (TableLayout) v.findViewById(R.id.PublishersTableLayout);
         //****
        for(Publisher p : dbh.getPublishers()){
            TableRow tableRow = new TableRow(v.getContext());
             //***добавление в таблицу строк
         }
  }
}
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
public class AddPublisherActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_publisher);
 
 
        this.publAddBtn = (Button) findViewById(R.id.PublisherAdd);
 
        final View publActivityView = View.inflate(this, R.layout.fragment_publishers, null);
 
        this.publAddBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DataBaseHelper dbh = new DataBaseHelper(getApplicationContext());
                dbh.putPublishersInfo(publName.getText().toString(), publTown.getText().toString());
                PublishersActivity.showPublishers(publActivityView); //ОБНОВЛЕНИЕ ПРОИСХОДИТ, МЕТОД ВЫЗЫВАЕТСЯ. НО СОДЕРЖИМОЕ НЕ ИЗМЕНИЯЕТСЯ
 
                finish();
 
            }
        });
 
    }
}
Вопрос: почему после вызова PublishersActivity.showPublishers(publActivityView); содержимое TableLayout не изменяется?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2015, 20:20     Не обновляется содержимое TableLayout в Fragment
Посмотрите здесь:

Android TableLayout
Android TableLayout
Android TableLayout
TableLayout по центру Android
Android TableLayout
Android Растянуть TableLayout на всю часть родителя
Программное заполнение и верстка TableLayout Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.04.2015, 20:34     Не обновляется содержимое TableLayout в Fragment #2
Проверяйте размер dbh.getPublishers(), он скорее всего всегда одинаковый. Значит надо смотреть заполнение dbh.
Или скорее всего onCreateView создается только один раз.
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
18.04.2015, 21:04  [ТС]     Не обновляется содержимое TableLayout в Fragment #3
Rube, Размер dbh.getPublishers() увеличивается.
onCreateView создается только один раз. Но я не знаю каким образом вызвать этот метод еще раз.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.04.2015, 21:19     Не обновляется содержимое TableLayout в Fragment #4
Через менеджер фрагментов? Откуда запускается PublishersActivity?
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
18.04.2015, 21:27  [ТС]     Не обновляется содержимое TableLayout в Fragment #5
Rube, из
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends Activity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
@Override
    public void onNavigationDrawerItemSelected(int position) {
        Fragment objFragment = null;
 
        switch(position){
            //****
            case 3:
                objFragment = new PublishersActivity();
                mTitle = getString(R.string.title_publishers);
                break;
            //****
            default:
        }
}
Добавлено через 1 минуту
Rube, как мне в AddPublisherActivity вызывать onNavigationDrawerItemSelected или получить ссылку на фрагмент и сделать для нее new ?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.04.2015, 22:18     Не обновляется содержимое TableLayout в Fragment #6
Попробуйте так
Java
1
2
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.layout.fragment_publishers, objFragment).commit();
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
18.04.2015, 22:29  [ТС]     Не обновляется содержимое TableLayout в Fragment #7
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
public class AddPublisherActivity extends Activity {
 
    EditText publName;
    EditText publTown;
    Button publAddBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_publisher);
 
        this.publName = (EditText)findViewById(R.id.addPublisherName);
        this.publTown = (EditText)findViewById(R.id.addPublisherTown);
        this.publAddBtn = (Button) findViewById(R.id.addPublisherButton);
 
        final View publActivityView = View.inflate(this, R.layout.fragment_publishers, null);
        final Fragment f = getFragmentManager().findFragmentById(R.layout.fragment_publishers);
 
        final FragmentManager fragmentManager = this.getFragmentManager();//////////
 
 
        this.publAddBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DataBaseHelper dbh = new DataBaseHelper(getApplicationContext());
                dbh.putPublishersInfo(publName.getText().toString(), publTown.getText().toString());
                PublishersActivity.showPublishers(publActivityView);
 
                finish();
                try {
                    fragmentManager.beginTransaction().replace(R.layout.fragment_publishers, f).commit();/////////////////
                }catch(Exception ex){
                    Toast.makeText(v.getContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
                }
 
            }
        });
 
    }
//*****
java.lang.NullPointerException: Attempt to write to field 'android.app.FragmentManagerImpl android.app.Fragment.mFragmentManager' on a null object reference
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.04.2015, 22:50     Не обновляется содержимое TableLayout в Fragment #8
А так у вас вроде фрагмент то уже не на экране, AddPublisherActivity текущий. Тогда да, фрагмента нет.
Может лучше и правильней использовать листвью с адаптером? Cursorloader который.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2015, 22:52     Не обновляется содержимое TableLayout в Fragment
Еще ссылки по теме:

TableLayout Android
Android TableLayout не растягивается на высоту свободной области
Не работает TableLayout Android
TableLayout Android
Связка ScrollView + Include + TableLayout Android

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

Или воспользуйтесь поиском по форуму:
Prostoplus
11 / 1 / 0
Регистрация: 21.09.2012
Сообщений: 122
18.04.2015, 22:52  [ТС]     Не обновляется содержимое TableLayout в Fragment #9
Rube, взял код из public void onNavigationDrawerItemSelected(int position) из MainActivity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
final FragmentManager fragmentManager = getFragmentManager();//////////
 
 
        this.publAddBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DataBaseHelper dbh = new DataBaseHelper(getApplicationContext());
                dbh.putPublishersInfo(publName.getText().toString(), publTown.getText().toString());
                PublishersActivity.showPublishers(publActivityView);
 
 
                try {
 
                    fragmentManager.beginTransaction().replace(R.id.container, new PublishersActivity()).commit();/////////////////
                }catch(Exception ex){
                    Toast.makeText(v.getContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
                }
                finish();
            }
        });
-не работает, значить Вы правы. Буду пробовать с другими компонентами
Yandex
Объявления
18.04.2015, 22:52     Не обновляется содержимое TableLayout в Fragment
Ответ Создать тему
Опции темы

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