2015-07-19 23 views
0

我在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; 
} 

回答

0

檢查你的活動,其在第一時間創建FragmentTwo的代碼。也許你在onCreate()中再次執行此代碼,用FragmentTwo代替當前片段(如果有的話)。

+0

是的,是這種情況...謝謝.....任何方式留在FragmentFour保留從FragmentTwo傳遞給FragmentFour的值? – Jerry

+1

是的,只需在創建和添加'FragmentTwo'之前檢查'onCreate()'中的savedInstanceState爲null。如果不是,則不執行任何操作,系統將恢復「FragmentFour」。 – BladeCoder

+0

謝謝,它現在工作! – Jerry

0

您正在調用fragment4的構造函數,而不是調用newinstance。