我有两个片段TestOneFragment
(这是默认片段)和TestTwoFragment
,这两个片段被添加到后堆栈中。当TestTwoFragment
处于前景时旋转屏幕时,文本也应保持不变。
这是片段中的onCreateView方法
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewHolder = inflater.inflate(R.layout.fragment_test_two, container, false)
arguments?.getString("msg").run {
if (this != null)
viewHolder.tvFragTestTwo.text = this
else
viewHolder.tvFragTestTwo.text = "NO BUTTONS CLICKED"
}
listener.onCreateListener(viewHolder.tvFragTestTwo.text.toString())
return viewHolder
}
我已经创建了一个界面OnCreateListener
,以便可以在“家长活动”中使用textView。这是该接口的实现。
override fun onCreateListener(string: String) {
val bundle = Bundle()
bundle.putString("msg", string)
testTwoFragment.arguments = bundle
}
每次旋转屏幕时,文本都会设置为默认值。
答案 0 :(得分:0)
每次旋转屏幕时,Android都会销毁并重新创建绑定到片段的活动。为了将文本保留在文本视图中,您应该将信息保存在onSaveInstanceState方法中,并在onActivityCreated方法中恢复保存的信息。
public class MainFragment extends Fragment {
// These variable are destroyed along with Activity
private String text;
...
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("your_text_id", text); // this text comes from your textview
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
text = savedInstanceState.getString("your_text_id");
}
}
答案 1 :(得分:0)
我添加了
android:configChanges="orientation|screenSize"
在清单文件中的相应活动标签中,它对我有用。