Autore Topic: Comunicazione Activity verso Fragment  (Letto 294 volte)

Offline lordtech2004

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Comunicazione Activity verso Fragment
« il: 11 Settembre 2014, 08:00:24 CEST »
0
Buongiorno a tutti,
sono nuovo nel forum e grazie a voi sono riuscito a capire diverse cosette di programmazione in android.
Oggi mi imbatto in un problema da cui non riesco a venirne a capo-.
Ho una classe che estende Fragment di nome InserisciSpesa.Java. Nel layout di questo fragment un TextView con id R.id.testookfoto

InserisciSpesa.Java
Codice (Java): [Seleziona]
public class InserisciSpesa extends Fragment implements OnItemSelectedListener, OnClickListener {
       
        View view;
 
   
   
   
   public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
     
      // fragment not when container null
      if (container == null) {
         return null;
      }
     
     
   
      // inflate view from layout
      view = inflater.inflate(R.layout.inserisci_spesa,container,false);
     

     
   
   // set text helper function*/
return view;
}
   

public void setText(String prova)
{
        TextView testodamodificare = (TextView)view.findViewById(R.id.testookfoto);
        testodamodificare.setText(prova);
}

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
       
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
       
}


 
@Override
public void onClick(View v) {

       
       

}
   


La activiy principale ho un metodo  onFotook(String s) che implementa OnFotoListener
Il problema è che quando  fragmenttemp.setText("OK"); viene eseguito mi restituisce un null point exception. E' come se il fragment InserisciSpesa non risulta istanziato e di conseguenza non mi carica il TextView.
Non ho modo di incollarvi il risultato del log ma il problema è proprio su quel richiamo al metodo setText.
Grazie per il vostro aiuto


Codice (Java): [Seleziona]
public class MainActivity extends FragmentActivity implements OnFotoListener{
         MyDatabase db = null;

   List<Fragment> fragments = new Vector<Fragment>();

      public String p2text,p3text;
   
   ActionBar actionBar;
   
   


   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      getSupportFragmentManager().beginTransaction()
      .add(R.id.container, new MenuMain()).commit();
     
       
     
   

     

 
      db=new MyDatabase(this);
      db.open();
     
     
     
   
   }
   
   public NonSwipeableViewPager getViewPager() {
           return mPager;
           }
   
   @Override
   public void onBackPressed() {
           
           getSupportFragmentManager().beginTransaction()
              .replace(R.id.container, new MenuMain()).commit();
   }

@Override
public void onFotook(String s) {
        // TODO Auto-generated method stub
       

         
             getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, fragmenttemp )
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
            .commit();
           
           fragmenttemp.setText("OK");
     
               
   
       
}
 

}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Comunicazione Activity verso Fragment
« Risposta #1 il: 11 Settembre 2014, 08:18:13 CEST »
0
Se c'è una eccezione (in questo caso NullPointerException), prima posta il LogCat, poi vediamo di capire la causa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lordtech2004

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Comunicazione Activity verso Fragment
« Risposta #2 il: 11 Settembre 2014, 18:03:50 CEST »
0
Grazie lo stesso. Purtroppo non avevo il logcat a mia disposizione.
Comunque ho risolto: praticamente la transazione del replace del fragment non era ancora conclusa quando veniva istanziata la TextView.
Ho risolto con il metodo di seguito descritto che ha come scopo quello di completare le transazioni pendenti.

getSupportFragmentManager().executePendingTransactions();