android返回鍵的監聽
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這個裡面監聽。在這裡面截取返回鍵的事件,然後改成其他事件,返回鍵就失效了。