Android studio,这个onBackPressed()代码有什么问题?

问题描述:

我用下面的代码关闭后按钮按下后的应用程序。前段时间它工作,但我试图再次使用它,并有:Android studio,这个onBackPressed()代码有什么问题?

错误:(88,13)错误:类,接口或枚举的预期。

如果我删除此代码应用程序可以构建,我不明白哪里是问题?

这里是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); 
    } 
} 

编辑: 解决。 Boollean之前的括号必须移至代码末尾。然后所有的作品。谢谢。

+1

其他'onBackPressed'必须'public'的代码看起来很好。它位于哪里? – laalto

+0

任何部分都可能有问题;请检查以下内容;布尔是一个对象包装,而布尔是一个原始数据类型;推翻的法律措施必须得到保护或公开; –

+0

代码是在onCreate()之后的mainactivity中。之后没有别的。如果我删除上面的代码,没问题, – Chab

你的第一个问题是你在课堂外实施了你的方法。在java中,方法需要属于class,interfaceenum。仔细检查你的括号并将你的方法移动到你的类括号里面。你的第二个问题是你有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() { 
    // ... 
    } 
} 
+0

我已经试过把它放在MainActivity类中,它不起作用。我再次尝试和工作!谢谢大家。 – Chab

+0

仔细看一下代码;方法签名与原始代码块 – Jon

+0

相比也是不同的,如果这解决了您的问题,请将其标记为可接受的答案,以便将来帮助人们;) – Jon

尽量把

super.onBackPressed() 

完成()

尝试this.finish() OR

尝试super.onBackPressed(); OR

呼叫NavUtils.navigateUpFromSameTask(this);,回到先前的屏幕前/活动