2012-06-09 15 views
5

में इरादे का उपयोग करके गतिविधि के बीच डेटा को पास करने के लिए कैसे करें मैं मान को एक चर में संग्रहीत कर सकता हूं, अब मैं उस चर को खंड में पास करना चाहता हूं।Android

निम्नलिखित कोड के साथ मैं टुकड़े लोड करने में सक्षम हूं।

public class AndroidListFragmentActivity extends Activity { 
Fragment2 f2; 
public static String itemname; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apetiserfragement); 
    itemname=getIntent().getStringExtra("itemname"); 
    Bundle args=new Bundle(); 
    args.putString("itemname", itemname); 
    f2=new Fragment2(); 
    f2.setArguments(args); 

} 
} 

2 खिड़कियां listfragment (सूचीदृश्य के लिए) के लिए विस्तार के लिए एक में ITEMNAME

उत्पादन में विभाजित है (यहाँ मैं एक्सएमएल पृष्ठ का उपयोग टुकड़ा लोड)। टुकड़े

Fragment2.xml

public class Fragment2 extends Fragment { 
String itemname; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    System.out.println(getArguments().getString("itemname")); 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 

    } 

AndroidListFragmentActivity इस वर्ग ITEMNAME मैं Fragment2.class पारित चाहते हैं के लिए एक।

+0

आपकी समस्या क्या है? कृपया वर्णन करें कि जब आप अपना कोड चलाते हैं तो क्या होता है? क्या आपको कोई त्रुटि मिलती है? यदि हां, तो लॉगकैट पोस्ट करें? यदि नहीं, तो व्यवहार आप जो चाहते हैं उससे भिन्न होता है? –

+0

इसके अलावा, कृपया अपने एक्सएमएल लेआउट पोस्ट करें। –

उत्तर

5

fragment constructors में से एक में प्रदान की जाती बंडल का उपयोग करें, और फिर आप सही है जहाँ आप में onCreateView()

उदाहरण के लिए चाहते करने से Bundle को पुनः प्राप्त करने में सक्षम होना चाहिए:

YourFragment.instantiate(context,"fragName",yourBundleWithValue); 

फिर, में आपका टुकड़ा:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    getArguments().getStringValue("name"); //Returns your string value 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 
+1

कृपया आप – naveen

+0

हो गया मेरे लिए नमूना कोड दे सकते हैं। तुम्हें पता है, या अपने खुद के स्थिर निर्माता उपलब्ध कराने के (हालांकि बाद वर्जित है) के आधार पर आपके टुकड़ा या तो इस विधि का उपयोग का दृष्टांत की जरूरत है। – hwrdprkns

+0

मैंने इस श्रेणी में एंड्रॉइड लिस्टफ्रैगमेंट एक्टिविटी में आइटम नाम मान संग्रहीत किया है। कृपया देखें कि मेरे कोड के अनुसार कोड मेरे कोड को बदलता है क्योंकि मैं टुकड़ों का नया हूं। कृपया मुझे आपकीफ्रैगमेंट.inस्टेंटिएट (संदर्भ, "fragName", yourBundleWithValue) में मदद करें; मेरे कोड के अनुसार सक्षम लाइन बदलें। – naveen

-1

आपको प्रदर्शित करने के लिए आपको FragmentManager का उपयोग करने की आवश्यकता है आर Fragment

+1

यह प्रश्न का उत्तर नहीं प्रदान करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। – infused

+0

@infused यह एक एक्सवाई समस्या है। ओपी पहले से ही 'setArguments()' और 'getArguments()' का उपयोग करता है, इसलिए कारण वह प्रदर्शित खंड को नहीं देख रहा है क्योंकि वह इसे प्रदर्शित करने के लिए 'FragmentManager' का उपयोग नहीं कर रहा है। –

+0

@infused और मैंने अभी देखा है कि यह प्रश्न दो साल पुराना है ... –