2012-05-23 162 views
0

我有後退按鈕的問題。他不工作。當我從第一個活動到第二個,從第二個到第三個後退按鈕不想工作。我用:Android和後退按鈕

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     Log.v("Co1s", "Cos1"); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

但是,當我按下按鈕我得到的只有:

10月5日至23日:45:57.863:W/KeyCharacterMap(238):無法打開keycharmap文件 05 -23 10:45:57.863:W/KeyCharacterMap(238):加載keycharmap 文件'/system/usr/keychars/pm8058-keypad.kcm.bin'時出錯。 hw.keyboards.0.devname = 'pm8058小鍵盤' 10月5日至23日:45:57.863: W/KeyCharacterMap(238):使用默認鍵盤映射: /system/usr/keychars/qwerty.kcm.bin

此功能中的此日誌未顯示在日誌中。爲什麼?

編輯: acrivity NR1:

protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.services_description); 

     back_button = (Button) findViewById(R.id.service_back_button); 
     back_button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       intent = new Intent(services_description.this, service.class); 
       TabActivityGroup parentActivity = (TabActivityGroup)getParent(); 
       parentActivity.startChildActivity("menu_activity", intent);  
       finish(); 
      } 
     }); 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Log.v("Co1s", "Cos1"); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

和第二:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.service); 

    title = (TextView) findViewById(R.id.serviceTitle); 
    description = (TextView) findViewById(R.id.serviceDescription); 
    nextPage = (ImageView) findViewById(R.id.serviceNextPage); 
    back_button = (Button) findViewById(R.id.service_back_button); 


    nextPage.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      intent = new Intent(service.this, services_description.class); 
      TabActivityGroup parentActivity = (TabActivityGroup)getParent(); 
      parentActivity.startChildActivity("menu_activity", intent);  

     } 
    }); 
    back_button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      finish(); 

     } 
    }); 
} 
@Override 
public void onBackPressed() { 
    Log.v("Cos", "Cos"); 
    finish(); 
} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     Log.v("Co1s", "Cos1"); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

在你的兩個哪個是後退按鈕不工作?如果你的第一個活動你都附加一個'onClick'監聽器到後退按鈕,並且同時你重寫'onKeyDown'。在你的第二個活動中,你重寫'onBackPressed'和'onKeyDown'。這一切似乎都有些魚腥味......似乎你不知道自己正在做什麼而做了很多不同的事情,所以我的建議是:刪除所有「絨毛」,並以一個儘可能簡單的例子開始。獲取後退按鈕,然後開始添加一個事件處理程序以使日誌工作正常。 – Nailuj

回答

0

你不應該做任何事情讓後退按鈕的工作。只要刪除整個塊if (keyCode == KeyEvent.KEYCODE_BACK)等,你應該都很好。

如果你因爲某些原因需要單擊後退按鈕時,登錄,我認爲你可以做這樣的:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Log.v("Co1s", "Cos1"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

重要的是,你轉嫁的「處理」點擊按鈕以重寫方法,並讓Android操作系統自己處理回到之前的活動。

+0

這不起作用。我沒有得到任何日誌。只有這個警告,但只有當我第一次按下按鈕。 – edi233

+0

@ edi233:但是您的後退按鈕是否按預期工作,即回到之前的活動?我認爲這是這裏的主要部分...而你說你沒有得到任何日誌條目:你有沒有嘗試在你的'onKeyDown'方法中設置一個斷點?在調試模式下運行時會發生什麼? 'keyCode'等的價值是什麼?你需要給我們更多的信息.​​.. – Nailuj

+0

不,它依然不起作用。我想用這個日誌來看看我點擊按鈕時是否顯示我。單擊時調試模式不會啓動。我不知道爲什麼。在其他項目中,你的方式完美地工作,但在這種情況下不行 – edi233

1

您可以通過方法onBackPressed()覆蓋後退按鈕,你也可以在這個方法,你的intent在移動應用程序的任何活動。更多你可以從onKeyDown() or onBackPressed()這個鏈接中獲得。這將爲您提供我們如何做到這一點