2013-08-20 11 views
9

लौटता है मैंने एक नज़र डाली है और इसी तरह के विषय के साथ कुछ प्रश्न मिलते हैं, लेकिन मेरे मामले में कुछ भी मदद नहीं करता है। मैं getSupportFragmentManager() का उपयोग कर मौजूदा सक्रिय खंड तक पहुंचने का प्रयास कर रहा हूं। FindFragmentByTag (TAG), लेकिन यह हमेशा शून्य देता है। समान प्रश्नों के उत्तरों ने सुझाव दिया कि प्रतिबद्धता को निष्पादित करने में कुछ समय लगता है, इसलिए कॉलिंग ढूंढना फ्रेगमेंटबेटाग बहुत जल्दी बुलाए जाने पर शून्य वापस आ जाएगा।एंड्रॉइड टुकड़े - findFragmentByTag हमेशा शून्य

  • getSupportFragmentManager जोड़ने() executePendingTransactions()
    तुरंत बाद प्रतिबद्ध है, लेकिन अभी अशक्त मिलती है: मैं दो बातें की कोशिश की है।।
  • ने एक बटन जोड़ा ... गतिविधि के निर्माण के बाद इसे दबाकर पंजीकृत टुकड़ा और प्रदर्शित दृश्य सिस्टम को प्रतिबद्ध करने के लिए पर्याप्त समय छोड़ देना चाहिए। लेकिन मुझे अभी भी शून्य मिल गया है।

यहाँ मेरी गतिविधि है:

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); 
} 

}

क्या मैं गलत यहाँ कर रहा हूँ? चीयर्स, मैक्स

+1

क्या आप निश्चित रूप से सहेजे गए हैंस्टेंसस्टेट शून्य है? – njzk2

+1

ft.addToBackStack (F_SETTINGS); <--- यह आपके टुकड़े टैग नहीं करता है। – bofredo

उत्तर

20

अपने कोड में आप विधि की जगह तो, टुकड़ा

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

की विधि की जगह की इस संरचना
उपयोग में अधिक जानकारी के लिए इस लिंक का संदर्भ लें में टैग का उल्लेख नहीं किया है। fragment replace with tag name

+0

ओह प्रिय, आप विश्वास नहीं करेंगे कि कोड में कितना समय लगता है कि यह गलत है ... धन्यवाद, अब काम करता है। – maxdownunder

+0

कृपया मेरा संबंधित प्रश्न देखें: http://stackoverflow.com/questions/24833912/refresh-fragment-ui-from-fragmentactivity –

संबंधित मुद्दे