我目前正在开发适用于 Android 的行输入计算器应用程序。单击按钮“按钮”时,它应该将两个 TextView 添加到 ScrollView 内的线性布局“holder_main_layout”中。其中一个 TextView 是左侧编辑文本的文本值,另一个是右侧的评估答案。所有这些都有效,但是当我重新调整手机方向(从垂直方向到横向或从横向到不同的横向方向)时,线性布局再次变为空白。我知道让所有这些 TextView 无法访问它们并不明智,但目前这是概念证明。
为什么我旋转手机时 ScrollView 是空的。我怎样才能防止这种情况发生。
public class main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LinearLayout holder_main_layout=(LinearLayout)findViewById(R.id.linearLayout2);
final CalculatorBase calc=new CalculatorBase();
final Button button = (Button) findViewById(R.id.button1);
final ScrollView scroller=(ScrollView)findViewById(R.id.scrollView1);
final main self=this;
final EditText input_text=(EditText)findViewById(R.id.editText1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView input_view=new TextView(self);
input_view.setText(input_text.getText());
holder_main_layout.addView(input_view);
TextView output_view=new TextView(self);
output_view.setText(String.valueOf(calc.eval_expression(input_text.getText().toString())));
output_view.setGravity(5);
holder_main_layout.addView(output_view);
input_text.setText("");
scroller.fullScroll(ScrollView.FOCUS_UP);
}
});
}
最佳答案
默认情况下,当方向改变时,Android 会销毁并重新创建 Activity。你可以做两件事:
- 按此处所述保存状态:https://developer.android.com/reference/android/app/Activity.html#SavingPersistentState
- 自行处理屏幕方向更改:https://developer.android.com/guide/topics/resources/runtime-changes.html
先试试第二种方法。修改您的 list 以在 Activity 定义中包含 android:configChanges
行:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
然后在 Activity 代码中放置以下方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
关于java - addView 到 ScrollView 中的线性布局在刷新时被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447677/