私はこのコードを断片的に持っています
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レイアウトを呼び出して、layout-landフォルダーのxmlをロードしたいと思います。
このコードはエラーを発生させず、機能せず、理由を理解していません。
OnConfiguratonChangedを使用してそれを行うことに本当に興味があります
私はどんな助けにも感謝します。
よろしくお願いします
onCreateView
でFrameLayout
を作成します-これはfragmenView
のコンテナです。次に、R.layout.testone
を作成し、それをframeLayout
に追加します。
onConfigurationChanged
clear FrameLayout
で、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);
}
これで、すべてが希望どおりに機能します。