在过去的几年里,我一直在学习Java并且正在自学android。我有一个小应用程序,从它可以调用画布,其中绘制几行。我遇到的问题是,如果我旋转我的移动设备,画布关闭,我再次看到前一个屏幕与调用画布的按钮。以下是调用画布的代码:
public class Weight_and_Balance extends AppCompatActivity
implements View.OnClickListener {
Button graph;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weight_and__balance);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// 1. Access the Button defined in layout XML
// and listen for it here
graph = (Button) findViewById(R.id.showgraph);
graph.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.showgraph:
// Code for Show Graph button
Draw draw;
draw = new Draw(this);
setContentView(draw);
break;
// case R.id.button2:
// // Code for button 2 click
// break;
}
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService
(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
作为一个新手,我可以将焦点传递给被调用的类吗? 如果不是你怎么留在画布上? 问题的原因是我花了相当长的时间让旋转工作并根据屏幕分辨率重新绘制线条,并希望能够旋转屏幕以给予绘制图像额外的宽度(或高度)。 谢谢。 保罗
答案 0 :(得分:0)
旋转设备时,将重新创建Activity
。这意味着将再次调用onCreate()
。这就是您遇到问题的原因。实际上,这根本不是问题。您需要确保在轮换时再次创建Draw
视图。
仅在setContentView()
内拨打onCreate()
一次。此方法是为整个View
设置Activity
。
您需要做的是在Draw
中使用activity_weight_and__balance.xml
视图,然后在onClick()期间,只需将此Draw View
的可见性设置为true。
如果您想在轮播期间保留此功能,则需要覆盖onSaveInstanceState()
并保存其中的内容,然后使用savedInstanceState
中的onCreate()
捆绑包来恢复刚刚保存的内容
有关轮播持久数据的详细信息,请参阅developers.android.com