Autore Topic: Settare TextView in un fragment aiuto!  (Letto 298 volte)

Offline EnzoBuono

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG g2
  • Sistema operativo:
    Windows 8
Settare TextView in un fragment aiuto!
« il: 23 Settembre 2014, 13:54:36 CEST »
0
Probabilmente è una domanda stupida ma non ne vengo a capo. Il mio problema è il seguente.
Sto utilizzando l'action bar con delle tab a cui ho associato un fragment. La classe relativa è la seguente:

Codice (Java): [Seleziona]
package com.example.tsp_project;

import java.util.ArrayList;
import java.util.List;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

       


@SuppressLint("NewApi")
public class ClasseTabCalcolo extends ActionBarActivity implements TabListener {
       
       
           TabMappa Mappa = new TabMappa();
           Tab_Info Info= new Tab_Info("PROVA");
           ProgressDialog pDialog;
           double miaLatitudine,miaLongitudine;
           public static android.support.v4.app.FragmentManager fragmentManager;
           
           
           private LocationListener myLocationListener = new LocationListener() {
                   @Override
                   public void onStatusChanged(String provider, int status, Bundle extras) {
                   if (status == LocationProvider.AVAILABLE) {
                   
                   } else {
                 
                   }
                   }
                   @Override
                   public void onProviderEnabled(String provider) {
                   
                   }
                   @Override
                   public void onProviderDisabled(String provider) {
                   
                   }
                   @Override
                   public void onLocationChanged(Location location) {
                           miaLatitudine=location.getLatitude();
                           miaLongitudine=location.getLongitude();
                           Info=new Tab_Info("Latitudine: "+String.valueOf(miaLatitudine)+"\n"+"Longitudine: "+String.valueOf(miaLongitudine));
                           
                   }
                   };
       

                @SuppressWarnings("unchecked")
                @TargetApi(Build.VERSION_CODES.HONEYCOMB)
                @SuppressLint("NewApi")        
                @Override      
                protected void onCreate(Bundle savedInstanceState) {
               
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.tab_layout);
                   
                    fragmentManager = getSupportFragmentManager();
                   
                       
                    Intent intent = getIntent();
                    Bundle args = intent.getBundleExtra("BUNDLE");
                    ArrayList<InfoLocation> posti = (ArrayList<InfoLocation>) args.getSerializable("InfoLuogo");
                   
                    if(!posti.isEmpty()){
                        String pippop=posti.get(0).getNome();
                        Toast pippo =Toast.makeText(this,pippop, Toast.LENGTH_LONG);
                        pippo.show();
                    }
                   
                    ActionBar bar = getActionBar();      
                    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);       
               
                    Tab tab = bar.newTab();    
                    tab.setText("Info");       
                    tab.setTabListener(this);
                    bar.addTab(tab,0);
                   
                    Tab tab2 = bar.newTab();   
                    tab2.setText("Mappa ");    
                    tab2.setTabListener(this); 
                    bar.addTab(tab2,1);
                   
                   
                    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
                        LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
                        boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
                        if(gpsEnabled){
                                Toast Pippo=Toast.makeText(this, "GPS ATTIVO", Toast.LENGTH_LONG);
                                Pippo.show();
                                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
                                                        }
                       
         
                       
                }

@Override
                public void onTabSelected(Tab tab, FragmentTransaction ft){
               
                        if(tab.getPosition()==0){
                                ft.replace(R.id.fragment_container, Info);
                        }
                       
                        if(tab.getPosition()==1){
                                ft.replace(R.id.fragment_container, Mappa);
                               
                        }              
                       
                }

La classe Tab_Info è la seguente:
Codice (Java): [Seleziona]
public class Tab_Info extends Fragment{
         
      String name;
      View v;
           
         Tab_Info(String nome){
                 name=nome;
         }
        @Override
                public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
               
               
               
        }
                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
               
                        Bundle savedInstanceState) {           
                   
                        v = inflater.inflate(R.layout.tab_info_layout,container,false);
                        TextView mia=(TextView)v.findViewById(R.id.textView1);
                        mia.setText(name);
                        return v;
               
                }              
               
}
Come si può notare nella classe ClasseTabCalcolo nel metodo onLocationChanged del GPS faccio fare ogni volta un new Info(String), così che il metodo del fragment OncreateView va a settare la textView con il risultato del gps. In questo modo funziona. Il mio dubbio: è giusto instanziare ogni volta un nuovo oggetto Tab_Info?. Ho provato a includere nella classe Tab_Info un metodo set_text() che semplicemente richiamava il set_text della textview, ma in questo modo quando seleziono il tab del fragment non mi aggiorna nulla se uso il metodo, solo se instanzio l'oggetto d'accapo. Si può aggiornare la textview senza usare sempre l'operatore new?