2012-05-29 64 views
0

我正在開發類似於'Diaro'應用程序和'MyDiary'應用程序的應用程序。重寫onBackPressed()沒有響應

我的應用程序的主要活動是控制所有其他活動的DiaryActivity。當添加按鈕被按下時,一個新的活動被打開,用戶在一個編輯文本字段中輸入數據,在按下後退按鈕時該項目被保存在數據庫中並被顯示在列表中(該列表是主要活動)。

現在主要活動的問題是,按下後退按鈕時,應用程序不是關閉,而是將控制權移回主要活動,只有這一次,最後一次輸入的內容不存在,而且它也存在只有當後退按鈕再次出現時,應用程序纔會關閉。

我認爲可能的解決方案可能是重寫onBackPressed()函數,並寫入finish()函數,但沒有奏效。

活動的代碼在這裏。

http://pastebin.com/ugMdVsbW

+0

你可以調用finish()當你點擊MainActity的「添加」按鈕。 –

+0

Vivek你是一個天才:D帽子給你的男人,謝謝:) – user47

回答

1
@Override 
public void onBackPressed() { 
     super.onBackPressed(); 
     finish(); 
} 

不需要寫finish()

super.onBackPressed()將做的工作。

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 
+0

如果這是OP的實現需要,甚至不需要重寫'onBackPressed()'。這是系統默認行爲。 – 2012-05-29 10:26:13

+0

我認爲,但問題是,即使我刪除了該功能,主要活動仍然沒有關閉。 – user47

+0

hi @hotveryspicy如果我們使用完成意味着它將關閉實時活動。否則,如果我們不會使用完成手段後退按鈕不會做任何工作。 – itsrajesh4uguys

0

我正在使用以下代碼。嘗試使用此代碼

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event){ 

     if ((keyCode == KeyEvent.KEYCODE_BACK)) { //stop your music here 
      // To exit application 
       finish(); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
0

我使用此代碼,做工精細,

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    {  
     back(); 
    } 

    return super.onKeyDown(keyCode, event); 
} 

public void back() 
{ 
    startActivity(new Intent(this, Home.class)); 
} 
+0

也許你不需要「返回super.onKeyDown(keyCode,event);」。我是一名年輕開發人員,我只是想幫助« – marceloamx