我正在制作我的第一个Android应用程序,当我按下后退按钮时,它会关闭应用程序,而不是回到之前的活动。有谁知道我怎么解决这个问题?
由于
这是我的" 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 :(得分:1)
在Hoofdscherm
活动中,您呼叫Acties
活动。然后在Acties
中按回来,您的申请将关闭。正确?
理想情况下,当你按回Acties
时会发生什么,它应该转到Hoofdscherm
,但是因为你在finish();
活动中呼叫Hoofdscherm
,它不再存在。因此您的应用程序退出。
如果您想从Hoofdscherm
返回Acties
,请移除finish()
活动中的Hoofdscherm
来电。
编辑:
Here's a bit more关于finish()
。
请记住 - 只有在您要关闭活动时才调用finish()
,如果您想要返回活动,请不要致电finish()
。
答案 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);
}
并且在语句内部只写下会称之为其他活动的代码。
编辑我看到你添加了你的代码,你在调用第二个活动后调用了finish(),这会杀死你的第一个活动,要么删除finish(),要么召唤第一个活动通过第二次活动的意图。
答案 2 :(得分: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