我正在为安卓手机编写一个电话拨号应用程序。我创建了一个按键布局,其中包含一个TextView和10个按钮。按钮作为10个数字(0到9)的键,TextView用于按下键后显示相应数字。
在我的应用中,我对TextView追加文本(例如"0"或"1"等),以便为每个按键添加数字。如果我按下按钮1、2、3,则TextView上的文本为123。 问题是,如果屏幕处于横向模式并且TextView包含123,则在转换为纵向模式时,TextView上没有任何文本。
请帮助我解决这个问题。
jeet推荐的方法对我不起作用。我必须添加"screenSize"。在您的活动的<activity>
节点中,这是您应该添加的行:
android:configChanges="keyboardHidden|orientation|screenSize"
<activity
android:name=".YourActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/AppTheme.NoActionBar">
screenSize
就解决了问题!调试了几个小时,终于找到了解决方案。 - Neurotransmitter请在屏幕旋转时进行检查,onCreate()方法会被调用,这需要重新创建所有视图,因此您需要使用以下方法之一:
Just use following flag true in your manifest file in activity tag android:configChanges="keyboardHidden|orientation". like below:
<activity android:name=".SampleActivity" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
...
</activity>
为了保存TextView的文本内容,您可以将TextView的freezesText
属性设置为true
。
例如:
<TextView
...
android:freezesText="true"
.../>
如果有人仍然遇到问题...这个方法对我很有帮助
public class BranjeKP extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_branje_kp);
//...
}
@Override
protected void onSaveInstanceState(Bundle out) {
super.onSaveInstanceState(out);
out.putString("TVNazivPod", TVNazivPodatka.getText().toString());
out.putString("TVEnotaMere", TVEnotaMere.getText().toString());
}
@Override
protected void onRestoreInstanceState(Bundle in) {
super.onRestoreInstanceState(in);
TVNazivPodatka.setText(in.getString("TVNazivPod"));
TVEnotaMere.setText(in.getString("TVEnotaMere"));
}
@Override public void onConfigurationChanged(final Configuration newConfig) { // 忽略方向更改以防止活动重新启动 super.onConfigurationChanged(newConfig); }
并在您的清单文件中添加以下内容:
这样应该就可以了。 - Mukunda