Sto lavorando con ViewPager
con 3 Fragments
e voglio cambiare il testo di TextView
nella terza pagina.Ottieni ID di TextView in Fragment da FragmentActivity in ViewPager
In quella pagina ho uno Button
che quando viene premuto, andare su immagini SD per selezionarne uno. Al termine, torna alla pagina e si desidera aggiornare TextView
con il percorso di quell'immagine. Il problema è che quando provo ad accedere a quello TextView
da FragmentActivity
è nullo.
Ecco il mio codice
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>
dove è textViewImg dichiarato? –
se si ha la visualizzazione di testo in 'fragment_pager', quindi è possibile inizializzarlo con' findViewById'. – Raghunandan
Mi dispiace, l'ho dimenticato. È dichiarato in xml di 'LecturaActivity' (terza pagina), quindi non è in' fragment_pager'. – Lyd