मुझे बैक स्टैक में खंड लेनदेन जोड़ने में कोई समस्या है। मैं एक मुख्य गतिविधि जिसमें मैं एक मेनू टुकड़ा के साथ अपने लेआउट को पॉप्युलेट है:वापस दबाकर पिछले खंड पर वापस नहीं आता
public class MainActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getFragmentManager().beginTransaction().add(R.id.frag_container, new MainMenuFragment()).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
फिर, MainMenuFragment अंदर, उपयोगकर्ता जो कुछ अन्य टुकड़ा के साथ मेनू टुकड़ा जगह में परिणाम कुछ विकल्प चुनता है :
public class MainMenuFragment extends Fragment implements OnItemClickListener{
GridView grid;
FragmentManager manager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.main_menu_fragment, container, false);
manager = getActivity().getFragmentManager();
grid = (GridView) root.findViewById(R.id.gridView1);
grid.setAdapter(new MenuTileAdapter(getActivity()));
grid.setOnItemClickListener(this);
return root;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentTransaction trans = manager.beginTransaction();
if (position == 0){
trans.replace(R.id.frag_container, new BasicSettingsFragment());
trans.addToBackStack(null);
trans.commit();
}
}
}
मैं क्या समझ के लिए, यह यह करना चाहिए, ताकि जब उपयोगकर्ता अपने डिवाइस पर बटन वापस दबाता है, वे ख हो जाएगा मेनू खंड पर वापस रोका, लेकिन इसके बजाय यह ऐप छोड़ देता है। मैं क्या गलत कर रहा हूं?
कोशिश जोड़ते समय आपकी गतिविधि पर इस एक कोशिश कर सकते हैं trans.add को बदलने की बजाय (R.id.frag_container, new BasicSettingsFragment()); –
इसके अलावा, मैंने स्क्रीन को घूर्णन करते समय देखा कि मेनू खंड को हटाया नहीं गया था, बस छिपा हुआ था। जब मैंने अपने फोन को घुमाया, तो यह 'बेसिकसेटिंगफ्रैगमेंट' पर दिखाई दिया। @ जॉर्जियंसनेटेटोस ने केवल पिछले खंड के शीर्ष पर नया टुकड़ा डाला। – jammaster
आपको पूर्ण मेनमेनूफ्रैगमेंट कोड पोस्ट करना चाहिए, सब ठीक दिखता है। –