安卓:为什么我的EditText保持其价值,甚至在方向变化?

这是出于好奇的问题。

我最近刚刚得知我要关心对保持我的方向活动状态改变自己。

但在我的布局之一,EDITTEXT只是保持它的价值,我不知道为什么? 很明显,我想重现此问题的其他EditTexts ...

继承人的布局中,是的EditText android的:ID =“@ + ID / createlistactivity_listname_edittext”

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/title_bar" android:gravity="center" android:text="Enter a Name" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/createlistactivity_listname_edittext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:hint="Name..." android:singleLine="true" > </EditText> </LinearLayout> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/CreateListActivity_HeaderLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/title_bar" android:gravity="center" android:text="Add Products to your new List" android:textAppearance="?android:attr/textAppearanceLarge" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:choiceMode="multipleChoice" android:footerDividersEnabled="true" > </ListView> <TextView android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="8dp" android:paddingRight="8dp" android:text="No Products available. Insert some Products in the Products menu first" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:id="@+id/CreateListActivity_BottomBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:weightSum="2" style="@android:style/ButtonBar" > <ImageButton android:id="@+id/CreateListActivity_SaveButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:background="@android:color/transparent" android:onClick="saveButtonClicked" android:src="@drawable/tick_32" /> <ImageButton android:id="@+id/CreateListActivity_CancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:background="@android:color/transparent" android:onClick="cancelButtonClicked" android:src="@drawable/block_32_2" /> </LinearLayout> </LinearLayout>

和这里是的onCreate为活性

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.createlistactivity_layout); _selectedItems = new HashMap<Integer, Integer>(); _productDAO = new ProductDAO(getApplication()); _listDAO = new ListDAO(getApplication()); _productCursor = _productDAO.getAllProductsCursor(); startManagingCursor(_productCursor); setUpListView(); final EditText listNameEditText = (EditText)this.findViewById(R.id.createlistactivity_listname_edittext); listNameEditText.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(listNameEditText .getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } return false; } }); }

这是一个包含不保留其状态edittexts另一个活动的代码

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableLayout android:id="@+id/TableLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/productImage" android:background="@android:drawable/alert_light_frame" > <TableRow android:id="@+id/productview_toprow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top" > <EditText android:id="@+id/productview_productname" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2" android:hint="Product Name" android:singleLine="true" > <requestFocus /> </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_weight="1" android:gravity="center_vertical|center_horizontal" android:text="@string/productview_pricelabel" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@android:color/black" /> <EditText android:id="@+id/productview_price_edittext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="0.0" android:singleLine="true" android:inputType="numberDecimal" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical|center_horizontal" android:text="@string/productview_unitlabel" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@android:color/black" /> <EditText android:id="@+id/productview_unit_edittext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="kg|ml|..." /> </TableRow> </TableLayout>

和的onCreate ...

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.productview); _productName = (EditText)findViewById(R.id.productview_productname); _productPrice = (EditText)findViewById(R.id.productview_price_edittext); _productUnit = (EditText)findViewById(R.id.productview_unit_edittext); _productImage = (ImageButton)findViewById(R.id.productImage); _productDAO = new ProductDAO(getApplication()); //set data from database _product = _productDAO.getProduct(getIntent().getExtras().getString(DataBaseKeys.PRODUCT_NAME)); if(_product != null) { _productName.setText(_product.getName()); _productImage.setImageBitmap(_product.getIcon()); _productPrice.setText(""+_product.getPrice()); _productUnit.setText(_product.getUnit()); _productIcon = _product.getIcon(); } }

--------------解决方案-------------

View S IN的Android也保留一些它的状态。 喜欢EditText保持它的文本,所以你不要有保存它onSaveInstanceState 。 其它例子是ListView保持的滚动位置。 EditText也保持滚动位置,如果它的多行文本。

但有些用户不得不takecare一样,如果你有一个应用程序注意的东西,你必须注意存储正在被编辑,以便对方向改变你知道你在工作内容ID。

这是Android的,没有什么不寻常这里的标准方式。 欲了解更多详情,请参阅。

节能活动状态

关于你的活动不表现为aspected一个是因为代码:

_product = _productDAO.getProduct(getIntent().getExtras().getString(DataBaseKeys.PRODUCT_NAME));

if(_product != null)
{
_productName.setText(_product.getName());
_productImage.setImageBitmap(_product.getIcon());
_productPrice.setText(""+_product.getPrice());
_productUnit.setText(_product.getUnit());
_productIcon = _product.getIcon();
}

你是覆盖编辑文本的值。 之前尝试此日志声明if声明。

Log.i("EDIT_NOT_WORKING", "VALUE OF EDIT: " + _productName.getText());

你应该看到它会打印输入的值。

分类:安卓 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.225 (s). 10 q(s)