问题是,当屏幕改变方向时,textview背景颜色消失了。 这是TextView定义:
<TextView
android:id="@+id/nomResult"
android:layout_width="fill_parent"
android:layout_height="80sp"
android:text="Nom result"
android:layout_below="@id/svitrkods"
android:layout_alignRight="@+id/svitrkods"
android:layout_above="@+id/exit_button"
android:freezesText="true"
/>
应用是库存应用。当产品已经在库存中时,我在textview中以红色背景显示文本。 vaiIrInvent.setBackgroundColor(0xfff00000);
有效。但是当屏幕旋转时,背景颜色消失了......
应用程序星星时,我保存textview defBackColor = vaiIrInvent.getBackground();
的原始背景颜色
然后在应用程序中我切换到红色或默认。
if (isInInventory)
{
vaiIrInvent.setBackgroundColor(0xfff00000);
}
else
{
vaiIrInvent.setBackgroundDrawable(defBackColor);
}
也许有一些像android:freezesText这样的选项? 谢谢。
答案 0 :(得分:1)
是的rotion调用onCreate()你需要保存信息以恢复首选项
这个链接应该解释得好一点
答案 1 :(得分:0)
看起来您在轮换时会丢失isInInventory
状态,因为在这种情况下,默认操作系统会创建一个新的Activity
实例。如果是这种情况,那么最好的方法是使用Activity
类公开的保存/恢复状态回调。请查看此详细信息:Saving activity state。
答案 2 :(得分:0)
回答我的情况是: 屏幕方向改变时保存扫描的条形码
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save entered code
savedInstanceState.putString("svkKods", svkKods.getText().toString());
super.onSaveInstanceState(savedInstanceState);
}
并恢复代码并查询db。
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
String mystr = savedInstanceState.getString("svkKods");
svkKods.setText(mystr);
//if code presents
if (mystr.length() > 3) FindKods(mystr); //query database and fill all texts and variables
}
我这样做是因为在变量存储状态下,当在数据库中找到条形码然后用户可以提交更改。否则显示消息必须找到条形码......