मैं एप्लिकेशन का विकास किया है, कि मैं एक टुकड़ा लेन-देन है,एंड्रॉयड टुकड़ा, देखने नहीं हटाया जाता है
MainActivity
Fragment View
शामिल हैं।
MainActivity
, स्क्रीन के शीर्ष पर तीन Button
है कि एक ही केवल MainActivity
Fragment
हिस्सा परिवर्तन रहने जब हम एक और Fragment
को यह Activity
जाना, जब हम तीन में से क्लिक करें।
लेकिन, मेरी समस्या यह है कि जब मैं से स्थानांतरित इस MainActivity
Fragment
करने के लिए जब यह ठीक है, लेकिन जब मैं Second-Button
पर क्लिक करें, परिणाम एक और Fragment
करने के लिए पहले Fragment
के साथ स्क्रीन के ऊपर लिख है First-Button
पर क्लिक करें।
यह एक ही Activity
में है, इसलिए, मैं के माध्यम से remove(fr).commit();
Fragment
नहीं निकाल सकते, तो मुझे लगता है कि फिर यह बन कर गैर क्लिक करने योग्य टुकड़ा इसलिए अगले बटन को क्लिक पर प्रतिक्रिया नहीं हटाने हो सकता है क्योंकि।
कुल परिणाम, यह दोनों FirstFragment
और NewFragment
स्क्रीन प्रदर्शित करते हैं, जब मैं NewFragment
में ले जाएँ मैं कैसे FirstFragment
स्क्रीन निकालना चाहते हैं?
MainActivity
तीन बटन में परिवर्तित करने के लिए निम्न कोड है टुकड़ा:
मुख्य गतिविधि:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#000000"
android:gravity="bottom"
android:weightSum="3" >
<ImageView
android:id="@+id/imgOne"
android:layout_width="0dp"
android:layout_height="27dp"
android:layout_gravity="center"
android:layout_weight="1"
android:src="@drawable/img1" />
<ImageView
android:id="@+id/imgTwo"
android:layout_width="0dp"
android:layout_gravity="center"
android:layout_height="27dp"
android:layout_weight="1"
android:src="@drawable/img2"/>
<ImageView
android:id="@+id/imgThree"
android:layout_width="0dp"
android:layout_gravity="center"
android:layout_height="27dp"
android:layout_weight="1"
android:src="@drawable/img3" />
</LinearLayout>
<fragment
android:id="@+id/fragment_place"
android:name="packagename.FirstFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.87"/>
<LinearLayout/>
<LinearLayout/>
पहले टुकड़ा:
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.first_fratgment, container, false);
return r;
}
}
public class MasterActivity extends Activity {
ImageView imgOne, imgTwo, imgThree;
Fragment fr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_master);
imgOne = (ImageView) findViewById(R.id.imgOne);
imgTwo = (ImageView) findViewById(R.id.imgTwo);
imgThree = (ImageView) findViewById(R.id.imgThree);
imgOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
fr = new FirstFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.addToBackStack(null);
//fragmentTransaction.remove(fr).commit();
//getFragmentManager().beginTransaction().remove(fr).commit();
fragmentTransaction.commit();
}
});
imgTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
fr = new SecondFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.addToBackStack(null);
//fragmentTransaction.remove(fr).commit();
// getFragmentManager().beginTransaction().remove(fr).commit();
fragmentTransaction.commit();
}
});
इसके निम्नलिखित की तरह xml फ़ाइल
दूसरा टुकड़ा:
public class SecondFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.second_fratgment, container, false);
return r;
}
}
लेकिन जब क्लिक एक बटन दूसरे करने के लिए Fragment
बटन पर यह दोनों पहले और दूसरे Fragment
स्क्रीन प्रदर्शित करते हैं।
तो इसे कैसे हल करें और दूसरा क्लिक करते समय पहले दृश्य को कैसे हटाएं?
मैं इस
fragmentTransaction.remove(fr).commit();
और इस
getFragmentManager().beginTransaction().remove(fr).commit();
इस्तेमाल किया, लेकिन यह काम नहीं कर रहा।
कृपया अपना न्यूफ्रैगमेंट क्लास –
या फिर सुनिश्चित करें, संपादित प्रश्न देखें –
आपके पास एक एम्बेडेड टुकड़ा नहीं है (जिसे खंड टैग के साथ एक्सएमएल लेआउट में घोषित किया गया है) जो आप लेनदेन करते हैं (जैसे प्रतिस्थापन)। तो उस खंड टैग के बजाय एक साधारण फ्रेमलेआउट डालें और गतिविधि के ऑनक्रेट() विधि में मैन्युअल रूप से टुकड़ा जोड़ें। – Luksprog