【发布时间】:2015-05-28 03:39:39
【问题描述】:
我的 EditText 在方向更改时遇到了一些问题。出于某种原因,他们不会恢复输入的任何内容。 我有2节课。主要活动和活动中的片段 主要活动:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(
setContentView(R.layout.
getFragmentManager().beginTransaction().replace(R.id.controlsBar, new AddItemFragment()).commit();
}
}
还有片段:
public class AddItemFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_add_item, container, false);
EditText item = (EditText) view.findViewById(R.id.itemNameAdd);
EditText amount = (EditText) view.findViewById(R.id.itemAmount);
if (savedInstanceState != null) {
System.out.println(savedInstanceState.getString("item"));
item.setText(savedInstanceState.getString("item", ""));
amount.setText(savedInstanceState.getString("amount", ""));
}
//item.setText("SOME TEXT");
//amount.setText("SOME TEXT");
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
EditText item = (EditText) getActivity().findViewById(R.id.itemNameAdd);
EditText amount = (EditText) getActivity().findViewById(R.id.itemAmount);
outState.putString("item", item.getText().toString());
outState.putString("amount", amount.getText().toString());
}
}
有趣的是,“System.out.println(savedInstanceState.getString("item"));”这一行在控制台中打印出正确的单词。 此外,我将文本设置为“某些文本”的注释行也有效。 只有当我将文本设置为 savedInstanceState.getString("amount", "") 时,它才会起作用
谢谢
【问题讨论】:
-
那么你得到了什么?你得到“”(一个空字符串,/默认值)吗?你试过
item.setText(savedInstanceState.getString("item"));吗? -
是的,我已经尝试过 item.setText(savedInstanceState.getString("item"));而且我没有得到“”,我只是得到提示文本
-
你收到
null了吗?你的键映射了吗?来自Android developmentgetString(String key)“返回与给定键关联的值,如果给定键不存在所需类型的映射或空值与键显式关联,则返回null。” -
如果什么是空的?我不确定我的键被映射是什么意思?我在 EditText 上使用了 keylistener,这可能是原因吗?
-
"如果什么是空的?"对
savedInstanceState.getString("item");的调用返回的内容。在System.out.println(savedInstanceState.getString("item"));这一行中正确返回但在item.setText(savedInstanceState.getString("item"));这一行中没有正确返回是没有意义的...