Использование onConfigurationChanged во фрагменте
У меня есть этот код во фрагменте
public class TestOne extends Fragment {
View view = null;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LayoutInflater inflater2 = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater2.inflate(R.layout.testone, null);
Toast.makeText(getActivity(), "Rotate fragment", Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(getActivity(), "onCreate Fragment", Toast.LENGTH_SHORT).show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
view = inflater.inflate(R.layout.testone, null);
Toast.makeText(getActivity(), "onCreateView fragment", Toast.LENGTH_SHORT).show();
return view;
}
}
то, что я пытаюсь сделать, это то, что, когда я поворачиваю телефон, я не хочу, чтобы методы были выполнены снова. Но я хочу снова вызвать XML-макет,чтобы загрузить xml-файл папки layout-land.
этот код не дает никаких ошибок, просто не работает и не понимает причины ..
Мне действительно интересно сделать это с помощью onConfiguratonChanged
Я ценю любые помощь.
спасибо
1 ответов
на onCreateView
создать FrameLayout
- это контейнер для Вы fragmenView
. Затем создайте свой R.layout.testone
и добавить его в frameLayout
.
на onConfigurationChanged
ясный FrameLayout
, create R.layout.testone
еще раз и добавьте его в frameLayout
.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
frameLayout = new FrameLayout(getActivity());
LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.testone, null);
frameLayout .addView(view);
return frameLayout;
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
frameLayout. removeAllViews();
LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.testone, null);
frameLayout .addView(view);
}
теперь все будет работать как вы хотите!