2012-06-10 81 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