2017-10-28 77 views
0

我用下面的代碼關閉後按鈕按下後的應用程序。前段時間它工作,但我試圖再次使用它,並有: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

回答

0

你的第一個問題是你在課堂外實施了你的方法。在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

0

儘量把

super.onBackPressed() 

完成()

1

嘗試this.finish() OR

嘗試super.onBackPressed(); OR

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