繁体   English   中英

Android的后退按钮不起作用

[英]Androids back button doesnt work

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

Hoofdscherm活动中,您称为Acties活动。 然后在Acties按回去,应用程序关闭。 对?

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

如果要从Acties返回到Hoofdscherm ,请在Hoofdscherm活动中删除finish()调用。

编辑:

这是有关finish() 更多信息。 请记住,仅当您要关闭Activity时才调用finish() ,如果要返回到它,则不要调用finish()

您可以通过覆盖活动中的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()或通过第二个活动中的意图召唤第一个活动。

这是您的解决方案

删除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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM