我为按钮设置上下文操作模式为什么点击 上下文操作 按钮就马上闪退呢,代码和老师的应该一样的
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ctx_button:演示contextmenu
//注册
// registerForContextMenu(findViewById(R.id.ctx_btn));
//创建
//菜单项的操作
//为按钮设置上下文操作模式
//1.实现ActionModeCallBack
//2.在view的长按事件中去启动上下文模式
findViewById(R.id.ctx_btn).setOnLongClickListener(new View.OnLongClickListener(){
@Override
public boolean onLongClick(View v) {
startActionMode((android.view.ActionMode.Callback) cb);
return false;
}
});
}
ActionMode.Callback cb = new ActionMode.Callback(){
//创建,在启动上下文操作模式(startActionMode(Callback))时调用
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
Log.e("TAG","创建");
getMenuInflater().inflate(R.menu.context,menu);
return true;
}
//在创建方法后进行使用
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
Log.e("TAG","准备");
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
Log.e("TAG","点击");
switch (menuItem.getItemId()){
case R.id.delete:
Toast.makeText(MainActivity.this,"删除",Toast.LENGTH_SHORT).show();
break;
case R.id.opera1:
Toast.makeText(MainActivity.this,"操作1",Toast.LENGTH_SHORT).show();
break;
case R.id.opera2:
Toast.makeText(MainActivity.this,"操作2",Toast.LENGTH_SHORT).show();
}
return true;
}
//上下文操作模式结束时调用
@Override
public void onDestroyActionMode(ActionMode actionMode) {
Log.e("TAG","结束");
}
};
// @Override
// public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
// getMenuInflater().inflate(R.menu.context,menu);
// }
//创建optionmenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//加载菜单资源
getMenuInflater().inflate(R.menu.option,menu);
return true;
}
// @Override
// public boolean onContextItemSelected(MenuItem item) {
// switch (item.getItemId()){
// case R.id.delete:
// Toast.makeText(this,"删除",Toast.LENGTH_SHORT).show();
// break;
// case R.id.opera1:
// Toast.makeText(this,"操作1",Toast.LENGTH_SHORT).show();
// break;
// case R.id.opera2:
// Toast.makeText(this,"操作2",Toast.LENGTH_SHORT).show();
// }
// return super.onContextItemSelected(item);
// }
//OptionMenu菜单项的选中方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.save:
Toast.makeText(this,"保存",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}4
收起
正在回答 回答被采纳积分+1
1回答
1.Android 零基础入门
- 参与学习 人
- 提交作业 1789 份
- 解答问题 2907 个
Android大楼Java起,本阶段是Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始入门Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星