Я не могу получить фрагмент для обновления после изменения данных. Я звонюandroid - Fragment onCreateView не вызывается после обновления и совершает транзакцию
getFragmentManager(). BeginTransaction(). Detach (this) .attach (this) .commit();
, но onCreateView не вызывается. Я попробовал несколько различных способов в refreshFragment(). Я вижу сообщения для «I/InjectionManager: dispatchCreateOptionsMenu» после того, как я вставил вышеприведенную строку кода, так что что-то происходит, но onCreateView() не получает вызов.
public class MainActivityFragment extends Fragment { private static Logger logger = Logger.getLogger(MainActivityFragment.class); String poolWord = "ABCDE"; String newWord = ""; public MainActivityFragment() { } @Override public void onCreate(Bundle savedInstanceState) { logger.info("onCreate------------------------"); super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { logger.info("onCreateView------------------------"); // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_main, container, false); GridView gridViewPool = (GridView) view.findViewById(R.id.gridviewPool); gridViewPool.setAdapter(new LetterImageAdapter(getActivity(), poolWord)); gridViewPool.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { logger.error("po " + position); updateWords(position); refreshFragment(); } }); GridView gridviewNewWord = (GridView) view.findViewById(R.id.gridviewNewWord); gridviewNewWord.setAdapter(new LetterImageAdapter(getActivity(), "")); return view; } private void refreshFragment() { logger.info("refreshFragment------------------------"); getFragmentManager().beginTransaction().detach(this).attach(this).commit(); // getFragmentManager().beginTransaction().replace(R.id.fragment, this).attach(this).commit(); // Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment); //getFragmentManager().beginTransaction().detach(fragment).attach(fragment).commit(); getFragmentManager().executePendingTransactions(); }
Я модифицировал refreshFragment() и разбил его на отдельные строки, а затем добавил некоторые записи, чтобы увидеть, отсоединен ли фрагмент. isDetached возвращает false как до, так и после вызова транзакции. detach(). Я новичок в этом, поэтому не знаю, что может произойти – user6627139