मैं एक गतिविधि में एक फ़्रैगमेंट जोड़ना चाहता हूं जो अपने लेआउट को प्रोग्रामेटिक रूप से लागू करता है। मैंने फ्रैगमेंट डॉक्यूमेंटेशन को देखा, लेकिन इसके कई उदाहरण नहीं हैं कि मुझे क्या चाहिए। इस प्रकार का कोड मैंने लिखने की कोशिश की है:
public class DebugExampleTwo extends Activity {
private ExampleTwoFragment mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
if (savedInstanceState == null) {
mFragment = new ExampleTwoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(frame.getId(), mFragment).commit();
}
setContentView(frame);
}
}
...
public class ExampleTwoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Button button = new Button(getActivity());
button.setText("Hello There");
return button;
}
}
यह कोड संकलित करता है, लेकिन शुरू में क्रैश हो जाता है, शायद इसलिए कि मेरा FragmentTransaction.add()
गलत है। ऐसा करने का सही तरीका क्या है?
ft.add(android.R.id.content, newFragment)
। केवल एक कस्टम लेआउट बनाना और उसकी आईडी सेट करना आवश्यक है यदि टुकड़ा का कंटेनर गतिविधि की सामग्री दृश्य नहीं है।