Android 上下文操作模式

Posted esrevinud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 上下文操作模式相关的知识,希望对你有一定的参考价值。

上下文操作模式和普通上下文菜单的区别在于操作模式的显示会覆盖视图顶层操作栏,而不是悬浮式的
通过在按钮上注册长按点击事件触发

上下文菜单 xml部分

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:title="登录"
        android:id="@+id/login"
        />
    <item android:title="注册"
        android:id="@+id/register"
        />
</menu>

java部分

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 按钮长按触发启动上下文操作模式
        findViewById(R.id.btn).setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                startActionMode(MainActivity.this.ac);
                return false;
            }
        });
    }
    
    // 实例化操作模式的回调类
    ActionMode.Callback ac = new ActionMode.Callback() {
        
        // 初始化时触发
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            getMenuInflater().inflate(R.menu.first, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }
        
        // 菜单项点击监听器 
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.login:
                    Toast.makeText(MainActivity.this, "你刚刚点了登录", Toast.LENGTH_LONG).show();
                    break;
                case R.id.register:
                    Toast.makeText(MainActivity.this, "你刚刚点了注册", Toast.LENGTH_LONG).show();
                    break;
            }
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // 结束时触发
        }
    };
}

以上是关于Android 上下文操作模式的主要内容,如果未能解决你的问题,请参考以下文章

onActivityResult 未在 Android API 23 的片段上调用

Android 上下文操作模式

是否有在单个活动中处理多个片段的 Android 设计模式?

Android:片段无法转换为上下文[重复]

片段无法转换为上下文

Android - 在寻呼机中获取片段的上下文