2013-08-20 26 views
9

Çevrenize bir baktım ve benzer bir konuyla ilgili birkaç soru buldum, ancak durumumda yardımcı olan hiçbir şey yok. getSupportFragmentManager(). FindFragmentByTag (TAG) kullanarak varolan bir etkin parçaya erişmeye çalışıyorum, ancak her zaman null döndürür. Benzer sorulardaki yanıtlar, işlemin yürütülmesi için biraz zaman almasını gerektirdiğini, bu nedenle findFragmentByTag çağrısının çok erken çağrılırsa null değerini döndüreceğini öne sürdü. Android fragmanları - findFragmentByTag her zaman null değerini döndürür

  • getSupportFragmentManager eklemek() executePendingTransactions()
    hemen sonra işlemek, ama yine null adlı olsun: İki şey denedim..
  • bir düğme ekledi ... aktivite oluşturulduktan sonra buna bastı, kaydedilen parça ve görüntülenen görünüm sistemini işlemek için yeterli zaman bırakmalıdır. Ama hala null'u aldım.

İşte benim etkinlik var:

public class MainActivity extends ActionBarActivity { 

private static final String F_SETTINGS = "f_settings"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    Button btn = (Button) findViewById(R.id.btn); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      debug(); 
     } 
    }); 

    if (savedInstanceState == null) { 
     FSettings newFragment = new FSettings(); 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.container, newFragment); 
     ft.addToBackStack(F_SETTINGS); 
     ft.commit(); 
     // getSupportFragmentManager().executePendingTransactions(); 
     //// Activating this did not make any difference... 
    } 

    debug(); 
} 

private void debug() { 
    String txt = "null"; 
    Fragment frag = getSupportFragmentManager().findFragmentByTag(F_SETTINGS); 
    if (frag != null) { 
     txt = frag.toString(); 
    } 
    Log.i("Testing", txt); 
} 

}

yanlış burada ne yapıyorum? Alkış, Kodunuzda Max

+1

savingInstanceState'ın boş olduğundan emin misiniz? – njzk2

+1

ft.addToBackStack (F_SETTINGS); <--- bu senin parçalarını etiketlemiyor. – bofredo

cevap

20

sen Yani,
Kullanım fragmanı

ft.replace(R.id.container, newFragment,"fragment_tag_String"); 

ait değiştirmek yönteminin bu yapı fazla bilgi için bu linki başvurun yöntemi yerine etiketini bahsetmedim. fragment replace with tag name

+0

Ah canım, neyin yanlış olduğunu anlamak için ne kadar sürdüğüne inanamayacaksın ... teşekkürler, şimdi çalışıyor. – maxdownunder

+0

Lütfen ilgili soruma bakın: http://stackoverflow.com/questions/24833912/refresh-fragment-ui-from-fragmentactivity –

İlgili konular