我在FragmentTwo()中有一個ListView。在點擊列表項目時,我被引導至FragmentFour()以及我點擊的項目。當我在FragmentFour()方向改變時,我被引導回FragmentTwo()。 這是爲什麼? 我還需要執行其他什麼方法?上一個片段加載定位更改
FragmentTwo
public void onBookSelected(String item) {
Fragment fragment = new FragmentFour();
Bundle args = new Bundle();
args.putString("book_value",item);
fragment.setArguments(args);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.commit();
}
FragmentFour
public static FragmentFour newInstance(Context context) {
FragmentFour f = new FragmentFour();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.inflater = inflater;
Toast.makeText(getActivity(),"onCreateView()",Toast.LENGTH_LONG);
final View rootView = inflater.inflate(R.layout.book_listview_layout, container, false);
book = getArguments().getString("book_value");
setActionBarTitle(book);
chapter_verse = new ArrayList<String>();
content = new ArrayList<String>();
getChapterVerseList();
getContentList();
first_load = 0;
popUpShown = false;
addItemsToSpinner1(rootView);
addItemsToSpinner2(rootView);
addListenerOnSpinnerItemSelection();
adapter = new BookViewCustomList(this.getActivity(),
chapter_verse,imageId,content);
lv = (ListView) rootView.findViewById(R.id.myListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView content = (TextView) view.findViewById(R.id.textViewContent);
String chapter_verse_selected = chapter_verse.get(position);
if(popUpShown == false) {
showPopUp(inflater, content.getText().toString(), chapter_verse_selected, book);
spinner1.setEnabled(false);
spinner2.setEnabled(false);
lv.setEnabled(false);
}
}
});
return rootView;
}
是的,是這種情況...謝謝.....任何方式留在FragmentFour保留從FragmentTwo傳遞給FragmentFour的值? – Jerry
是的,只需在創建和添加'FragmentTwo'之前檢查'onCreate()'中的savedInstanceState爲null。如果不是,則不執行任何操作,系統將恢復「FragmentFour」。 – BladeCoder
謝謝,它現在工作! – Jerry