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を呼び出しているため、存在しなくなります。したがって、アプリケーションは終了します。finish();Hoofdscherm

Hoofdschermからに戻りたい場合は、アクティビティの通話をActies削除してください。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);
}

ステートメント内に、あなたが他のアクティビティであることを呼び出すコードを記述します。

編集2番目のアクティビティを呼び出した後にfinish()を呼び出したコードを追加しました。これにより、最初のアクティビティが強制終了され、finish()が削除されるか、2番目のアクティビティのインテントを介して1番目のアクティビティが呼び出されます。

于 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 に答える