Obtener id de TextView en Fragmento de FragmentActivity en ViewPager

Estoy trabajando con ViewPager con 3 Fragments y quiero cambiar el texto de TextView en tercera página.

En esa página tengo un Button que cuando está presionado, vaya a imágenes SD para seleccionar una. Cuando haya terminado, regresa a la página y desea actualizar TextView con la ruta de esa imagen. El problema es que cuando intento acceder a TextView desde FragmentActivity es null.

Aquí está mi código

SherlockFragmentActivity:

 public class TabsFacturasActivity extends SherlockFragmentActivity { protected MyApplication myApplication; private static final int FILE_SELECT_CODE = 0; private MyAdapter mAdapter; private ViewPager mPager; private PageIndicator mIndicator; private TextView textViewImg; private int lecturas = 0; private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); private boolean adjunto = false; private String filePath; private boolean esLecturaAT = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); // Get the application instance myApplication = (MyApplication)getApplication(); //Need to get that view textViewImg = (TextView) findViewById(R.id.textViewUrlImgLectura); //Creamos la lista LinkedList<String> direcciones = new LinkedList<String>(); ArrayList<TuplaCupsWS> dirs = myApplication.getUsuarioActual().getCups(); for(int dir = 0; dir < myApplication.getUsuarioActual().getCups().size(); dir++) { direcciones.add(new String(dirs.get(dir).getDireccion())); } int tab = getIntent().getIntExtra("tab", 0); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setCurrentItem(tab); mIndicator = (TitlePageIndicator)findViewById(R.id.indicator); mIndicator.setViewPager(mPager); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setIcon(R.drawable.logo_factorenergia_peque); /** Create an array adapter to populate dropdownlist */ ArrayAdapter<String> adapter = new ArrayAdapter<String>( getBaseContext(), android.R.layout.simple_spinner_dropdown_item, direcciones); /** Enabling dropdown list navigation for the action bar */ getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); /** Defining Navigation listener */ OnNavigationListener navigationListener = new OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { return false; } }; /** Setting dropdown items and item navigation listener for the actionbar */ getSupportActionBar().setListNavigationCallbacks(adapter, (com.actionbarsherlock.app.ActionBar.OnNavigationListener) navigationListener); } @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]; textViewImg.setText(imgName); //Here textViewImg is null filePath = path; } break; } super.onActivityResult(requestCode, resultCode, data); } //Method executed when Button is pressed public void examinar(View view) { mostrarFileChooser(); } private void mostrarFileChooser() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); try { startActivityForResult(intent, FILE_SELECT_CODE); } catch (android.content.ActivityNotFoundException ex) { } } 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(); } //return new MyFragment(); return null; } @Override public int getCount() { return titles.length; } } } 

Fragment_pager.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" tools:context=".TabsFacturasActivity" > <com.viewpagerindicator.TitlePageIndicator android:id="@+id/indicator" android:padding="10dip" android:layout_height="wrap_content" android:layout_width="fill_parent" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#1184A4E8" /> </LinearLayout> 

No se puede acceder a la vista de texto desde la fragment activity ya que su fragment localizado en el fragment y el fragment activity layout no tienen ninguna text view con este id . Tienes que acceder a la vista de texto desde tu third fragment donde lo usaste en su layout . A continuación, acceda a ese object desde la fragment activity de su fragment activity .

En su fragmento hacer algo como esto

 TextView mTextView; mTextView = (TextView)getView().findViewById(R.id.your_text_view); 

Crear una función como esta

 public void changeText(String mText) { mTextView.setText(mText); } 

En el resultado de su actividad

 //Do not create new object each time you set text. Use the same fragment object which you use for view pager. Your_Fragment mFragment; protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case FILE_SELECT_CODE: if (resultCode == RESULT_OK) { //Set text from here mFragment.changeText(imgName); } 

Puede inflar un diseño en el que se declara textView :

 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.your_layout, this, false); 

y entonces:

 textViewImg = (TextView) view.findViewById(R.id.textViewUrlImgLectura); 
  • Comportamiento impar: Tipo de clase del objeto devuelto por el método getText () de cambios TextView después de crear AccessibilityNodeInfo de TextView
  • El botón de clic no cambia el valor de vista de texto
  • Cambiar entre un TextView y EditText
  • Cómo cambiar TextView texto en DataChange sin llamada atrás TextWatcher Listener
  • TextView android: ellipsize = "end" issue
  • Cómo manejar el evento "pegar" en Android 3.0 (Honeycomb)?
  • Android: dos problemas con Tablerow + TextView en Tablelayout
  • Cómo configurar la cadena de respuesta JSON formateada en un TextView?
  • Cómo obtener rápidamente el ancho y la altura de TextView utilizando Paint.getTextBounds ()?
  • Desplazamiento por programación de una palabra en vista en una vista de texto
  • Textview dentro de RelativeLayout en la vista personalizada ¿No se aplica la gravedad correctamente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.