2012-06-10 5 views
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(); 
      } 
     }); 


    } 
} 

И это "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, но так как вы вызываете finish(); в вашей Hoofdscherm деятельности, она больше не существует. Следовательно, ваше приложение завершается.

Если вы хотите вернуться к Hoofdscherm из Acties, удалить finish() вызов в вашей Hoofdscherm деятельности.

EDIT:

Here's a bit more о finish(). Помните - звоните только по телефону finish(), если вы хотите его вернуть, не звоните finish().

+0

спасибо :) сейчас он работает –

+1

Всегда помните, чтобы опубликовать свой код вместе с вашей проблемой. На этот вопрос легко ответить, и вы тоже не получаете вниз. :-) –

0

вы можете переопределить поведение кнопки, переопределив метод onKeyDown в действии и используя простой, если stat, чтобы узнать, был ли нажатым ключ, был обратный ключ

@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); 
} 

и внутри инструкции просто напишите код, который будет называть вас другой деятельностью.

EDIT Я вижу, что вы добавили свой код, вы вызвали завершение() после вызова вашего второго действия, которое убьет ваше первое действие, либо удалите финиш(), либо вызовите 1-ю деятельность с помощью намерения 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 
Смежные вопросы