Note that there are some explanatory texts on larger screens.

plurals
  1. POGet id of TextView in Fragment from FragmentActivity in ViewPager
    text
    copied!<p>I'm working with <code>ViewPager</code> with 3 <code>Fragments</code> and I want to change text of <code>TextView</code> in third page.</p> <p>In that page I have a <code>Button</code>that when its pressed, go to SD images to select one. When done, returns to page and want to update <code>TextView</code> with path of that image. The problem is that when I try to access that <code>TextView</code>from <code>FragmentActivity</code>it is null.</p> <p><strong>Here is my code</strong></p> <p><strong>SherlockFragmentActivity:</strong></p> <pre><code>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&lt;String&gt; direcciones = new LinkedList&lt;String&gt;(); ArrayList&lt;TuplaCupsWS&gt; dirs = myApplication.getUsuarioActual().getCups(); for(int dir = 0; dir &lt; 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&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;( 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; } } } </code></pre> <p><strong>fragment_pager.xml</strong></p> <pre><code>&lt;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" &gt; &lt;com.viewpagerindicator.TitlePageIndicator android:id="@+id/indicator" android:padding="10dip" android:layout_height="wrap_content" android:layout_width="fill_parent" /&gt; &lt;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" /&gt; &lt;/LinearLayout&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload