prevent后退按钮而ActionMode活跃 [英] Prevent Back button whilst ActionMode is active
问题描述
在下面链接的问题的过程不出现对我也与标准或支持ActionMode工作。 ACTION_UP从不出现作为一个参数虽然ACTION_DOWN不但无论如何,在ActionMode仍取消。
<一个href=\"http://stackoverflow.com/questions/11725729/$p$pvent-to-cancel-action-mode-by-$p$pss-back-button\">$p$pvent由preSS取消操作模式后退按钮
任何人可以建议如何prevent从收盘时的返回键是pressed?操作模式
我的code
进口android.os.Bundle;
进口android.support.v7.app.AppCompatActivity;
进口android.support.v7.widget.Toolbar;进口android.view.KeyEvent;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.Button;
进口android.widget.Toast;公共类测试扩展AppCompatActivity {工具栏工具栏;
按钮的标准;
按钮的支持;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.test); 工具栏=(栏)findViewById(R.id.toolbar);
setSupportActionBar(工具栏); 标准=(按钮)findViewById(R.id.standard);
standard.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
startActionMode(standardCallback);
standard.setVisibility(View.GONE);
support.setVisibility(View.GONE);
}
}); 支持=(按钮)findViewById(R.id.support);
support.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
startSupportActionMode(supportCallback);
standard.setVisibility(View.GONE);
support.setVisibility(View.GONE);
}
});}私人android.view.ActionMode.Callback standardCallback =新android.view.ActionMode.Callback(){
@覆盖
公共布尔onCreateActionMode(android.view.ActionMode模式,菜单菜单){
mode.setTitle(标准动作模式已启用);
返回true;
} @覆盖
在prepareActionMode公共布尔(android.view.ActionMode模式,菜单菜单){
返回false;
} @覆盖
公共布尔onActionItemClicked(android.view.ActionMode模式,菜单项项){
返回false;
} @覆盖
公共无效onDestroyActionMode(android.view.ActionMode模式){
standard.setVisibility(View.VISIBLE);
support.setVisibility(View.VISIBLE);
}
};//要求主题条目:&LT;项目名称=windowActionModeOverlay&GT;真&LT; /项目&GT;
私人android.support.v7.view.ActionMode.Callback supportCallback =新android.support.v7.view.ActionMode.Callback(){
@覆盖
公共布尔onCreateActionMode(android.support.v7.view.ActionMode模式,菜单菜单){
mode.setTitle(支持行动模式已启用);
返回true;
} @覆盖
在prepareActionMode公共布尔(android.support.v7.view.ActionMode模式,菜单菜单){
返回false;
} @覆盖
公共布尔onActionItemClicked(android.support.v7.view.ActionMode模式,菜单项项){
返回false;
} @覆盖
公共无效onDestroyActionMode(android.support.v7.view.ActionMode模式){
standard.setVisibility(View.VISIBLE);
support.setVisibility(View.VISIBLE);
}
};@覆盖
公共布尔dispatchKeyEvent(KeyEvent的事件){
如果(event.getKey code()== KeyEvent.KEY code_BACK&放大器;&安培; event.getAction()== KeyEvent.ACTION_UP){
//处理您的后退按钮code在这里
Toast.makeText(这一点,回到ACTION_UP,Toast.LENGTH_LONG).show();
返回true; //消耗后面关键事件 - ActionMode没有完成
} 如果(event.getKey code()== KeyEvent.KEY code_BACK&放大器;&安培; event.getAction()== KeyEvent.ACTION_DOWN){
//处理您的后退按钮code在这里
Toast.makeText(这一点,回到ACTION_DOWN,Toast.LENGTH_LONG).show();
返回true; //消耗后面关键事件 - ActionMode没有完成
} 返回super.dispatchKeyEvent(事件);
}
}
布局
&LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直&GT;&LT; android.support.v7.widget.Toolbar
机器人:ID =@ + ID /工具栏
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ATTR / colorPrimary背景=
安卓了minHeight =机器人:ATTR / actionBarSize
机器人:主题=@风格/ ThemeOverlay.AppCompat.Dark.ActionBar/&GT;&LT;按钮
机器人:ID =@ + ID /标准
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_margin =30dp
机器人:文字=标准/&GT;&LT;按钮
机器人:ID =@ + ID /支持
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_margin =30dp
机器人:文字=支持/&GT;&LT; / LinearLayout中&GT;
我使用工具栏从支持库,来仿真ActionMode条解决了这个。
The procedure in the question linked below does not appear to work for me either with the standard or the support ActionMode. ACTION_UP never appears as a parameter although ACTION_DOWN does but regardless, the ActionMode is still cancelled.
Prevent to cancel Action Mode by press back button
Can anybody suggest how to prevent the action mode from closing when the back key is pressed?
My code
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class test extends AppCompatActivity {
Toolbar toolbar;
Button standard;
Button support;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
toolbar= (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
standard= (Button) findViewById(R.id.standard);
standard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActionMode(standardCallback);
standard.setVisibility(View.GONE);
support.setVisibility(View.GONE);
}
});
support= (Button) findViewById(R.id.support);
support.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startSupportActionMode(supportCallback);
standard.setVisibility(View.GONE);
support.setVisibility(View.GONE);
}
});
}
private android.view.ActionMode.Callback standardCallback=new android.view.ActionMode.Callback() {
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
mode.setTitle("Standard Action Mode Enabled");
return true;
}
@Override
public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(android.view.ActionMode mode) {
standard.setVisibility(View.VISIBLE);
support.setVisibility(View.VISIBLE);
}
};
//requires theme entry: <item name="windowActionModeOverlay">true</item>
private android.support.v7.view.ActionMode.Callback supportCallback=new android.support.v7.view.ActionMode.Callback() {
@Override
public boolean onCreateActionMode(android.support.v7.view.ActionMode mode, Menu menu) {
mode.setTitle("Support Action Mode Enabled");
return true;
}
@Override
public boolean onPrepareActionMode(android.support.v7.view.ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(android.support.v7.view.ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(android.support.v7.view.ActionMode mode) {
standard.setVisibility(View.VISIBLE);
support.setVisibility(View.VISIBLE);
}
};
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
// handle your back button code here
Toast.makeText(this,"Back ACTION_UP",Toast.LENGTH_LONG).show();
return true; // consumes the back key event - ActionMode is not finished
}
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
// handle your back button code here
Toast.makeText(this,"Back ACTION_DOWN",Toast.LENGTH_LONG).show();
return true; // consumes the back key event - ActionMode is not finished
}
return super.dispatchKeyEvent(event);
}
}
Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?android:attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<Button
android:id="@+id/standard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:text="Standard"/>
<Button
android:id="@+id/support"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:text="Support"/>
</LinearLayout>
I solved this by using the Toolbar from the Support Library to emulate an ActionMode bar.
这篇关于prevent后退按钮而ActionMode活跃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!