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 中,方法需要属于 class
、interface
或 enum
。仔细检查您的括号并将您的方法移至 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() {
// ...
}
}
我使用下面的代码在按下后退按钮后关闭应用程序。前段时间它有效,但我尝试再次使用它并得到:
错误:(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 中,方法需要属于 class
、interface
或 enum
。仔细检查您的括号并将您的方法移至 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() {
// ...
}
}