當前位置:首頁 » 安卓系統 » android返回鍵的監聽

android返回鍵的監聽

發布時間: 2022-09-22 05:10:48

A. android 在fragment中怎麼監聽返回鍵,home鍵

android 在fragment中如何監聽返回鍵,home鍵
在activity中用keydown很容易實現對返回鍵的監聽,但是這個函數不能再fragment中重載。
通過咱嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//這個和下面的這個命令必須要設置了,才能監聽back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回鍵 時的操作
if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {
File file = new File(currentfilepach);
openDir2(file.getParent().toString());
currentfilepach = file.getParent().toString();
return true;
} //後退
return false; //已處理
}
}
return false;
}
};
}

B. android怎麼監聽返回鍵等等按鍵

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
/* 返回鍵 */
if (keyCode == KeyEvent.KEYCODE_BACK) {
toast("Back");
}else if (keyCode == KeyEvent.KEYCODE_MENU) {
toast("Menu");
} else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
toast("Search");
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
toast("down");
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
toast("UP");
}
return false;
}

C. android 返回鍵的監聽如何設置

你的MainActivity是第一個Activity吧?你只需要在SecondActivity設置返回監聽到MainActivity就可以了。另外你要注意當你啟動到一個新的Activity的時候,記得將當前的activity finish掉。
稍微想了一下,我知道你為何按返回鍵的時候重復在m和s之間跳轉了。因為你跳轉到M的時候沒有將s finish掉,這樣的話你反悔其實是返回到s,而你又監聽了s的返回鍵,因此又回到了m,周而復始。

D. android 在fragment中怎麼監聽返回鍵,home鍵

在activity中用keydown很容易實現對返回鍵的監聽,但是這個函數不能再fragment中重載。
通過嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//這個和下面的這個命令必須要設置了,才能監聽back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回鍵 時的操作
if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {
File file = new File(currentfilepach);
openDir2(file.getParent().toString());
currentfilepach = file.getParent().toString();
return true;
} //後退
return false; //已處理
}
}
return false;
}
};
}

E. android 在fragment中怎麼監聽返回鍵,home鍵

android 在fragment中如何監聽返回鍵,home鍵
在activity中用keydown很容易實現對返回鍵的監聽,但是這個函數不能再fragment中重載。
通過我嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//這個和下面的這個命令必須要設置了,才能監聽back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回鍵 時的操作

F. android 在fragment中怎麼監聽返回鍵,home鍵

android 在fragment中如何監聽返回鍵,home鍵
在activity中用keydown很容易實現對返回鍵的監聽,但是這個函數不能再fragment中重載。
通過我嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//這個和下面的這個命令必須要設置了,才能監聽back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回鍵 時的操作
if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {
File file = new File(currentfilepach);
openDir2(file.getParent().toString());
currentfilepach = file.getParent().toString();
return true;
} //後退
return false; //已處理
}
}
return false;
}
};
}

G. android 在fragment中怎麼監聽返回鍵,home鍵

android 在fragment中如何監聽返回鍵,home鍵
在activity中用keydown很容易實現對返回鍵的監聽,但是這個函數不能再fragment中重載。
通過我嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//這個和下面的這個命令必須要設置了,才能監聽back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回鍵 時的操作
if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {
File file = new File(currentfilepach);
openDir2(file.getParent().toString());
currentfilepach = file.getParent().toString();
return true;
} //後退
return false; //已處理
}
}
return false;
}
};
}

H. android檢測返回鍵onBackPressed和onKeyDown區別

本篇文章介紹如何在Android中實現監聽返回鍵,主鍵,菜單鍵。一般情況下,我們都可以在Android手機底部看到三個按鈕,這三個按鈕就分別是返回鍵,主鍵,菜單鍵。

接下來介紹監聽這三個鍵的實現。

第一種方法通過onBackPressed()方法來實現

/**
* 注意:
* super.onBackPressed()會自動調用finish()方法,關閉當前Activity.
*/
@Override
public void onBackPressed() {
super.onBackPressed();
Toast.makeText(this, "按下了back鍵 onBackPressed()", Toast.LENGTH_SHORT).show();
}

onBackPressed()提供的功能有限,它這是在退出之前通知onBackPressed()方法,並不能改變用戶原來的行為

利用onKeyDown方法,就可以實現

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Toast.makeText(this, "按下了back鍵 onKeyDown()", Toast.LENGTH_SHORT).show();
return false;
}else {
return super.onKeyDown(keyCode, event);
}
}

onKeyDown方法返回true表示退出,返回false便不退出。

還可以通過跳轉來實現退出,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}

通過onKeyDown我們可以實現,實現「再按一次返回鍵退出程序」的功能

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}

監聽Home鍵可以通過onUserLeaveHint()方法來實現,

@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Toast.makeText(this, "onUserLeaveHint", Toast.LENGTH_SHORT).show();
}

在這個方法中,我們可以觀察出,如果onUserLeaveHint方法是不能改變用戶的行為的。

在手機下方的三個鍵中,最右邊的鍵就是菜單鍵,通常是用方括弧表示的。經過筆者的測試發現,如果輕點一下,那麼會跳出菜單界面,如果長點的話,那麼會退出程序。這個過程會自動調用onUserLeaveHint方法,也就是主鍵。

菜單的監聽也可以通過onKeyDown()方法來實現

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

處理上面這樣的方法,onOptionsMenuClosed()方法也可以實現。

@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
Toast.makeText(this, "onOptionsMenuClosed clicked", Toast.LENGTH_SHORT)
.show();
}
經過筆者的測試,發生這些方法在高版本中可能出現不兼容的情況,關於菜單可以查看 Android中Menu菜單

原文地址: https://www.cnblogs.com/HDK2016/p/8695052.html#a1

I. 如何使android的返回鍵失效,應該如何加監聽

onBackPress這個裡面監聽。在這裡面截取返回鍵的事件,然後改成其他事件,返回鍵就失效了。

熱點內容
天貓上傳 發布:2025-01-13 06:06:35 瀏覽:155
php處理並發 發布:2025-01-13 06:03:44 瀏覽:281
安卓傳文件的軟體哪個最好 發布:2025-01-13 06:03:07 瀏覽:884
電腦伺服器可以做嗎 發布:2025-01-13 05:59:49 瀏覽:845
前端配置代理的時候怎麼看埠 發布:2025-01-13 05:57:25 瀏覽:907
同桌的你文學腳本 發布:2025-01-13 05:42:12 瀏覽:744
32位加密演算法 發布:2025-01-13 05:39:48 瀏覽:309
腳本寫入軟體 發布:2025-01-13 05:36:49 瀏覽:61
快手自動演算法 發布:2025-01-13 05:28:41 瀏覽:119
python的interpreter 發布:2025-01-13 05:27:56 瀏覽:148