屏幕旋转会导致上一个类显示

时间:2015-11-10 16:32:32

标签: rotation android-canvas

在过去的几年里,我一直在学习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);
    }

}

}

作为一个新手,我可以将焦点传递给被调用的类吗? 如果不是你怎么留在画布上? 问题的原因是我花了相当长的时间让旋转工作并根据屏幕分辨率重新绘制线条,并希望能够旋转屏幕以给予绘制图像额外的宽度(或高度)。 谢谢。 保罗

1 个答案:

答案 0 :(得分:0)

旋转设备时,将重新创建Activity。这意味着将再次调用onCreate()。这就是您遇到问题的原因。实际上,这根本不是问题。您需要确保在轮换时再次创建Draw视图。

  1. 仅在setContentView()内拨打onCreate()一次。此方法是为整个View设置Activity

  2. 您需要做的是在Draw中使用activity_weight_and__balance.xml视图,然后在onClick()期间,只需将此Draw View的可见性设置为true。

  3. 如果您想在轮播期间保留此功能,则需要覆盖onSaveInstanceState()并保存其中的内容,然后使用savedInstanceState中的onCreate()捆绑包来恢复刚刚保存的内容

    有关轮播持久数据的详细信息,请参阅developers.android.com