使用android恢复TextView的文本:freezestext无法正常工作

时间:2015-08-04 08:47:13

标签: java android

我试图在屏幕旋转时保留TextView的文本。以下是我的代码片段。

SampleActivity.java

public class SampleActivity extends AppCompatActivity {
    private static TextView mIntView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_layout.xml);

        mIntView = (TextView) findViewById(R.id.int_view);

        if (savedInstanceState == null) {
            mIntView.setText(String.valueOf(1));
        }

        Log.d("Test", mIntView.getText().toString());
    }

}

sample_layout.xml

<TextView
     android:id="@+id/int_view"
     android:background="@drawable/circle"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="top|center"
     android:layout_marginRight="20dp"
     android:gravity="center_vertical|center_horizontal"
     android:textSize="25sp"
     android:clickable="true"
     android:textColor="@color/blue"
     android:freezesText="true"/>

android:freezesText =“true”属性应该保留TextView的状态。但是当我旋转屏幕时,整数“1”从TextView中消失了。我在这里做错了吗?

3 个答案:

答案 0 :(得分:1)

您可以覆盖onSaveInstanceState方法并放置要保存的所有值。让他们回到onRestoreIntanceState方法。

保存价值:

@Override
protected void onSaveInstanceState(Bundle outState) {

      outState.putString(KEY, VALUE);
}

恢复价值:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if(savedInstanceState != null){

     String mString = savedInstanceState.getString(KEY);
     yourTextview.setText(mString); 

   }
 }

答案 1 :(得分:0)

我在回答这个问题上有些延迟,但是我希望这会有所帮助。

将textview属性设置为savedInstanceState时不需要android:freezesText="true"。就这么简单。

只需创建sample_layout.xml文件的横向变体。确保在android:freezesText的纵向和横向变化中,true都设置为sample_layout.xml

Create Landscape Variation

答案 2 :(得分:-1)

每当旋转设备时,活动都会被销毁并刷新。所以Text再次刷新。

要防止这种情况发生,请在AndroidManifest.xml

中使用此功能
android:configChanges="orientation"

如果您的应用针对的是API级别13或更高级别,则应设置此配置:

android:configChanges="orientation|screenSize"