Android 工作室,这段 onBackPressed() 代码有什么问题?

Android studio, what is wrong with this onBackPressed() code?

我使用下面的代码在按下后退按钮后关闭应用程序。前段时间它有效,但我尝试再次使用它并得到:

错误:(88, 13) 错误:class,需要接口或枚举。

如果我删除此代码应用程序可以构建,我看不出问题出在哪里?

这里是 MainActivity 实现 onBackPressed 的地方:

package com.example.chab.test;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.os.Handler;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView image = (ImageView) findViewById(R.id.a);
    ImageView image1 = (ImageView) findViewById(R.id.b);
    ImageView image2 = (ImageView) findViewById(R.id.c);
    ImageView image3 = (ImageView) findViewById(R.id.d);
    ImageView image4 = (ImageView) findViewById(R.id.e);
    ImageView image5 = (ImageView) findViewById(R.id.f);
    ImageView image6 = (ImageView) findViewById(R.id.g);

    Picasso.with(this).load("http:/1.jpeg").into(image);
    Picasso.with(this).load("http://1.jpeg").into(image1);
    Picasso.with(this).load("http://1.jpeg").into(image2);
    Picasso.with(this).load("http://1.jpeg").into(image3);
    Picasso.with(this).load("http://1.jpeg").into(image4);
    Picasso.with(this).load("http://1.jpeg").into(image5);
    Picasso.with(this).load("http://1.jpeg").into(image6);

    Button btnOne = (Button) findViewById(R.id.Btn);
    btnOne.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(getApplicationContext(), Activitydwa.class);
            startActivity(intent);
        }
    });


}
}  //THIS BRACKET MUST BE MOVED TO THE END OF CODE!

private Boolean exit = false;
@Override
private void super.onBackPressed() {
    if (exit) {
        this.finish(); // finish activity
    } else {
        Toast.makeText(this, "Press Back again to Exit.", Toast.LENGTH_SHORT).show();
        exit = true;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                exit = false;
            }
        }, 3 * 1000);
    }
}

编辑: 解决了。 Boolean 之前的括号必须移到代码末尾。然后一切正常。谢谢。

尽量放

super.onBackPressed()

完成之前()

尝试this.finish()

尝试super.onBackPressed();

调用 NavUtils.navigateUpFromSameTask(this); 返回上一屏幕/ activity

您的第一个问题是您的方法是在 class 之外实现的。在 java 中,方法需要属于 classinterfaceenum。仔细检查您的括号并将您的方法移至 class 括号内。您的第二个问题是 onBackPressed 方法的签名错误。请看下面的代码:


这是你拥有的:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // ...
  }
}

private Boolean exit = false;

@Override
private void super.onBackPressed() {
  // ...
}

这就是你需要的:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // ...
  }

  private Boolean exit = false;

  @Override
  public void onBackPressed() {
    // ...
  }
}