0

我正在制作我的第一个 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();
            }
        });


   }
} 

这是“行动”页面

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();
   }
}
4

3 回答 3

1

从您的Hoofdscherm活动中,您调用您的Acties活动。然后在Acties你按下后,你的应用程序就会关闭。正确的?

理想情况下,发生的事情是,从Acties您按下返回时,它应该转到,但是由于您Hoofdscherm正在调用Activity,它不再存在。因此您的应用程序退出。finish();Hoofdscherm

如果您想返回Hoofdschermfrom ,请在您的ActivityActies中删除finish()调用。Hoofdscherm

编辑:

这里有更多关于finish(). 记住——只有finish()在你想关闭你的活动时才打电话,如果你想回到它,不要打电话finish()

于 2012-06-10T10:42:57.947 回答
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(),要么通过第二个活动的意图召唤第一个活动。

于 2012-06-10T10:42:45.933 回答
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
于 2012-06-10T10:46:31.137 回答