मुझे पेजर के बिना टुकड़ों के माध्यम से नेविगेट करने का उचित तरीका पता लगाने में परेशानी हो रही है और मुझे स्क्रीन अभिविन्यास के लिए कॉन्फ़िगरेशन परिवर्तनों के दौरान समस्याएं आ रही हैं। मैं उन्हें दृश्यमान और कार्यात्मक बनाने के लिए टुकड़ों पर दिखाएँ/छुपाएं का उपयोग कर रहा हूं लेकिन मुझे आश्चर्य है कि मुझे इसके बजाय डिटेच/अटैच का उपयोग करना चाहिए। मुझे बैक स्टैक में चीजों को जोड़ने में भी समस्याएं आ रही हैं और मुझे लगता है कि यह शो/छुपा के उपयोग के कारण भी है। क्या अटैच/डिटेच का उपयोग करना बेहतर है या क्या पिछला/वर्तमान खंड दिखाने/छिपाने के लिए बैक बटन क्या करता है इसे ओवरराइड करने का कोई तरीका है।टुकड़े डिस्च/रीटैच बनाम दिखाएँ/छुपाएं
व्यवहार: मेरे पास नक्शा खंड और कुछ अन्य लोगों के साथ एक सूची खंड है। सबकुछ ठीक से शुरू होता है और प्रारंभिक रूप से अभिविन्यास परिवर्तनों के साथ काम करता है। जब मैं सूची में नेविगेट करता हूं तो यह सही ढंग से पॉप्युलेट करता है लेकिन अभिविन्यास परिवर्तन पर सूची में डेटा के बिना फिर से खींचा जाता है। मानचित्र दृश्य को भी फिर से खींचा जाता है और मेरे पेजर शीर्षक संकेतक के पीछे दिखाई देता है। यदि कोई मुझे यह हल करने के लिए सही दिशा में इंगित कर सकता है तो यह शानदार होगा। मुझे संदेह है कि इस तरह से होता है कि मैं टुकड़े दिखा रहा हूं और छुपा रहा हूं।
यहां वह जगह है जहां मैं टुकड़े बनाते हैं और उन्हें खंड प्रबंधक में जोड़ता हूं। मैंने यह भी दिखाया है कि मैं टुकड़े दिखाता/छुपाता हूं।
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_frags);
mapViewContainer = LayoutInflater.from(this)
.inflate(R.layout.map, null);
setupFragments();
showFragment(0);
}
public void setListData(String name) {
bName = name;
showFragment(1);
}
private void setupFragments() {
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
mFragment1 = fm.findFragmentByTag("f1");
if (mFragment1 == null) {
mFragment1 = new MenuFragment();
ft.add(mFragment1, "f1");
ft.hide(mFragment1);
}
mMapFragment = (MapFragment) getSupportFragmentManager()
.findFragmentByTag(MapFragment.TAG);
if (mMapFragment == null) {
mMapFragment = MapFragment.newInstance(0);
ft.add(R.id.fragment_container, mMapFragment, MapFragment.TAG);
}
ft.hide(mMapFragment);
myListFragment = (ListFrag) getSupportFragmentManager()
.findFragmentByTag(ListFrag.TAG);
if (myListFragment == null) {
myListFragment = new ListFrag();
ft.add(R.id.fragment_container, myListFragment, ListFrag.TAG);
}
ft.hide(myListFragment);
frag = (frag) getSupportFragmentManager().findFragmentByTag(
frag.TAG);
if (frag == null) {
bacFrag = new frag();
ft.add(R.id.fragment_container, frag, frag.TAG);
}
ft.hide(bacFrag);
ft.commit();
}
public void showFragment(int fragIn) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
if (mVisible != null) {
if (mVisible == mListFragment) {
ft.remove(mListFragment);
} else {
ft.hide(mVisible);
}
}
switch (fragIn) {
case 0:
ft.show(mMapFragment);
ft.commit();
mVisible = mMapFragment;
break;
case 1:
mListFragment = (ListFragmentDisplay) getSupportFragmentManager()
.findFragmentByTag(ListFragmentDisplay.TAG);
Toast.makeText(this, "startListFrag", Toast.LENGTH_LONG).show();
if (mListFragment == null) {
mListFragment = new ListFragmentDisplay();
ft.add(R.id.fragment_container, mListFragment,
ListFragmentDisplay.TAG);
}
ft.show(mListFragment).commit();
mVisible = mListFragment;
break;
case 2:
ft.show(myfragment).commit();
mVisible = myfragment;
break;
case 3:
ft.show(frag).commit();
mVisible = frag;
break;
}
}
यदि आप अपनी गतिविधि को ओरिएंटेशन चेंज पर पुनरारंभ करने से रोकना चाहते हैं तो आप एंड्रॉइड में कॉन्फ़िगरेशन चेंज = "ओरिएंटेशन कीबोर्ड कीबोर्ड" जोड़ सकते हैं। – Faizan
डिटेच/अटैच संसाधनों को मुक्त कर देगा, जबकि छुपाएं/शो नहीं होगा। – Faizan