Изменение текста TextView не работает

Я хочу изменить текст TextViewв onActivityResultметоде. Вроде правильно поставил, но в view не вижу.

Это TextViewв третьем Fragment из ViewPager.

Итак, вот мой код:

public class TabsFacturasActivity extends SherlockFragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_pager);
        //...
        mAdapter = new MyAdapter(getSupportFragmentManager());

        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
       //...
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case FILE_SELECT_CODE:
            if (resultCode == RESULT_OK) {
                adjunto = true;
                // Get the Uri of the selected file 
                Uri uri = data.getData();
                // Get the path
                String path = "";
                try {
                    path = MyUtility.getPath(this, uri);
                } catch (URISyntaxException e) {
                    myApplication.throwException(this);
                    e.printStackTrace();
                }
                String imgName = path.split("/")[path.split("/").length-1];
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = inflater.inflate(R.layout.activity_lectura, null, false);
                textViewImg = (TextView) view.findViewById(R.id.textViewUrlImgLectura);
                System.out.println("text view before: "+textViewImg.getText()); //It returns correct value "..."
                textViewImg.setText(imgName);
                textViewImg.invalidate(); //It does nothing
                System.out.println("text view after: "+textViewImg.getText()); //It returns correct value with image path
                filePath = path;
            }
            break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    private static class MyAdapter extends FragmentPagerAdapter {

        private String[] titles = { "VER FACTURAS", "VER CONSUMO", "INTRODUCIR LECTURA" };

        public MyAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0: // Fragment # 0
                return new FacturasActivity();
            case 1: // Fragment # 1
                return new ConsumoActivity();
            case 2:// Fragment # 2
                return new LecturaActivity(); //TextView is here
            }
            return null;
        }

        @Override
        public int getCount() {
            return titles.length;
        }

    }
}

Как видите, я пытался использовать invalidate, но это ничего не дало. Как я могу решить эту проблему?


person Lyd    schedule 29.08.2013    source источник
comment
где вы добавляете View view в виде фрагмента?   -  person Mohsin Naeem    schedule 29.08.2013
comment
Я обновил свой вопрос. TextViewв третьем Fragment (LecturaActivity).   -  person Lyd    schedule 29.08.2013
comment
вы надуваете новый activity_lectura, но не добавили его в представление фрагмента   -  person Mohsin Naeem    schedule 29.08.2013
comment
Как мне его добавить?   -  person Lyd    schedule 29.08.2013
comment
Во-первых, почему вы не используете представление фрагмента? возьмите ссылку textViewUrlImgLectura из представления Fragment.   -  person Mohsin Naeem    schedule 29.08.2013
comment
Это мой предыдущий вопрос.   -  person Lyd    schedule 29.08.2013
comment
это решит вашу проблему stackoverflow.com/a/18487696/1436931   -  person Mohsin Naeem    schedule 29.08.2013
comment
Да, это работает! Спасибо!   -  person Lyd    schedule 29.08.2013


Ответы (3)


Попробуйте textViewImg.requestLayout();

person Itai Hanski    schedule 29.08.2013
comment
Я установил его после textViewImg.setText(imgName), и он ничего не делает. - person Lyd; 29.08.2013
comment
Вы уверены, что ваш код выполняется? вы пытались его отладить? - person Itai Hanski; 29.08.2013

Что-то может быть не так с вашими фрагментами. Может быть, есть другое текстовое представление с тем же идентификатором в другом фрагменте, который вы, возможно, загрузили, и текст задается им. Попробуйте распечатать значения идентификаторов textview.

person Kumar Bibek    schedule 29.08.2013
comment
он раздувает новый вид activity_lectura... и никогда не добавляет его в вид фрагмента - person Mohsin Naeem; 29.08.2013
comment
Я предполагаю, что используемый здесь адаптер пейджера загружает несколько страниц/фрагментов в основное действие. - person Kumar Bibek; 29.08.2013

Я решил этот ответ: https://stackoverflow.com/a/18487696/1088643

Я получаю экземпляр моего Fragment и методы доступа здесь:

LecturaActivity lecturaFragment = (LecturaActivity) 
                        getSupportFragmentManager().findFragmentByTag(
                           "android:switcher:"+R.id.pager+":"+2);
lecturaFragment.changeImgText(imgName);
person Lyd    schedule 29.08.2013