Android Studio错误:@Override不适用于字段

时间:2017-10-27 06:02:42

标签: java android override

我对Android开发相当新,作为我的第一个应用程序,我想制作一个手电筒应用程序。因此,我想要做的第一步是在中心创建一个按钮,使其在每次点击后交替地将其文本更改为“ON”和“OFF”。我制作了java代码,但Android工作室给了我这个错误:'@Override'不适用于字段。这是我的java代码:

    package com.danielfernandzz.flashlight;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    public boolean switchState = false;
    Button switchbutton = (Button) findViewById(R.id.Switch);
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void Switched(View v){

        if(!switchState){
            switchState = true;
            switchbutton.setText("OFF");
        }else{
            switchState = false;
            switchbutton.setText("ON");
        }
    }
}

这是我的xml代码(如果你需要它):

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.danielfernandzz.flashlight.MainActivity">

    <Button
        android:id="@+id/Switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginTop="8dp"
        android:onClick="Switched"
        android:text="ON"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

我尝试评论@Override并没有出现错误。但是当我运行应用程序时,它崩溃了,所以我认为应用程序崩溃了,因为@Override不在那里? 我不明白为什么会发生这种情况,我已经看到了其他问题,但他们的错误是不同的。 注意:我使用的是最新版本的Android Studio 3.0

2 个答案:

答案 0 :(得分:0)

根据@Jerrol,您可以在onCreate之前放置@Override。没有必要在变量初始化之前放置它。你能否给我们删除后得到的崩溃日志。

答案 1 :(得分:0)

试试这个

1.在switchbutton = (Button) findViewById(R.id.Switch);方法

中移动onCreate()

2. @Override之前onCreate()

示例代码

public class MainActivity extends AppCompatActivity {
    public boolean switchState = false;
    Button switchbutton ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        switchbutton = (Button) findViewById(R.id.Switch);
    }

    public void Switched(View v){

        if(!switchState){
            switchState = true;
            switchbutton.setText("OFF");
        }else{
            switchState = false;
            switchbutton.setText("ON");
        }
    }
}