2012-06-10 78 views
0

我正在製作我的第一個android應用程序,當我按下後退按鈕時,它會關閉應用程序,而不是回到以前的活動。有誰知道我該如何解決這個問題?Androids後退按鈕不起作用

感謝

這是我的 「Hoofdscherm」 頁面,從這裏你可以去 「Acties」 頁面

package com.WNF; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageButton; 

public class Hoofdscherm extends Activity { 
// aanroepen van een bundle, kan je elke naam geven die je maar wilt, 
//zolang de bundle als de onCreate maar dezelfde naam hebben 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     // de setContentView is niets meer dan de gegevens van de 
//View ophalen uit de R.layout.naamvandeXML 
     // Onthoud goed dat je dezelfde XMLs voor meerdere pagina's 
//kan gebruiken. 
     setContentView(R.layout.hoofdscherm); 

     Button b = (Button) findViewById(R.id.button1); 
     ImageButton i = (ImageButton) findViewById(R.id.imageButton1); 

     b.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       Intent in = new Intent(Hoofdscherm.this,Acties.class); 
       startActivity(in); 
       finish(); //deze activity wordt gestopt 
      } 
     }); 

     i.setOnClickListener(new OnClickListener(){ 
      public void onClick(View g){ 
       Intent ib = new Intent(Hoofdscherm.this,Acties.class); 
       startActivity(ib); 
       finish(); 
      } 
     }); 


    } 
} 

這是 「Acties」 頁面

package com.WNF; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 

public class Acties extends Activity{ 
// aanroepen van een bundle, kan je elke naam geven die je maar wilt, 
//zolang de bundle als de onCreate maar dezelfde naam hebben 
@Override 
public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     // de setContentView is niets meer dan de gegevens van de 
//View ophalen uit de R.layout.naamvandeXML 
     // Onthoud goed dat je dezelfde XMLs voor meerdere pagina's 
//kan gebruiken. 
     setContentView(R.layout.acties1); 

     getIntent(); 
    } 
} 
+0

很難說出問題,直到您發佈一些代碼。 –

+0

發佈您的代碼! – WickeD

+0

發佈您的代碼.......... –

回答

1

從你的Hoofdscherm活動你打電話給你的Acties活動。然後在Acties中按下並關閉應用程序。對?

正在發生的事情是,理想情況下,從Acties當你按下回來,就應該到Hoofdscherm,但因爲你是在你的Hoofdscherm活動呼籲finish();,它不再存在。因此你的應用程序退出。

如果您想要從Acties回到Hoofdscherm,請在您的Hoofdscherm活動中刪除finish()呼叫。

編輯:

Here's a bit morefinish()。 請記住 - 只有當您要關閉活動時才撥打電話finish(),如果您想回到活動狀態,請不要撥打finish()

+0

謝謝:)它現在正常工作 –

+1

請務必記住您的代碼以及您的問題。回答這種方式很容易,而且也不會陷入低谷。 :-) –

0

您可以通過覆蓋活動中的onKeyDown方法來覆蓋該按鈕的行爲,並使用簡單的if語句來確定被按下的鍵是否是後退鍵

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     // your code here 
     return true; 
    else return false 
    return super.onKeyDown(keyCode, event); 
} 

在聲明中,只需編寫將稱爲其他活動的代碼。

編輯我看你添加你的代碼,你打電話給你第二次活動後,所謂的結束(),這會殺了你的第一個活動,或者刪除結束(),或通過從意圖召喚1日活動第二次活動。

0

這裏是您的解決方案

取出finish()方法。

b.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 

       Intent in = new Intent(Hoofdscherm.this,Acties.class); 

       startActivity(in); 

      finish(); // Remove this..and it will work as you want it to 
     } 
    }); 

finish() method avoids storing of the activity on the Back Stack