Android Studio:使用布局放置画布和按钮

时间:2016-02-29 04:55:50

标签: android canvas

我正在读一本关于构建名为" Dot Smasher的应用程序的书。"

我决定通过在画布上方添加一个按钮来完成其中一项任务。 我决定使用LinearLayout并执行以下操作:

public class MainActivity extends AppCompatActivity {

private Timer timer;
private DotSmasherCanvas canvas;
private DotSmasherTimerTask task;
private Button button;
private LinearLayout layout;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle("DotSmasher");
    canvas = new DotSmasherCanvas(getBaseContext());
    timer = new Timer();
    task = new DotSmasherTimerTask(canvas);
    timer.schedule(task, 0, 1500);

    button = (Button) findViewById (R.id.button);

    layout = (LinearLayout) findViewById(R.id.layout);
    layout.addView(canvas);

    setContentView(R.layout.activity_main);



}
}

这是xml文件 - activity_main.xml:

enter image description here

如果我只做 setContentView(canvas);

,我能够让它工作

但不是上面,我做错了什么?

在我尝试运行之前,Android Studio中没有错误显示。

1 个答案:

答案 0 :(得分:1)

您似乎不了解布局的工作原理。您在调用setContentView之前调用findViewById。这不起作用 - 在设置内容视图之前,没有地方可以搜索视图。你不应该混合使用xml布局和编程视图,除非你有一个非常动态的布局 - 要么你的DotSmasherCanvas应该在布局中,要么它们都不应该在xml中(可能是第一个)。