如何在androidx的片段中实现动作模式?
我必须在片段中实现动作模式,但它在动作模式中获得nullpointer异常。我已经尝试了这么多,但没有得到任何结果,请帮助我,我是新的安卓系统。我也尝试过startActionMode,但没有尝试impact。我浪费了我的时间&搜索了很多代码,但没有找到任何解决方案。请帮帮我如何在androidx的片段中实现动作模式?,android,android-studio,android-fragments,androidx,android-actionmode,Android,Android Studio,Android Fragments,Androidx,Android Actionmode,我必须在片段中实现动作模式,但它在动作模式中获得nullpointer异常。我已经尝试了这么多,但没有得到任何结果,请帮助我,我是新的安卓系统。我也尝试过startActionMode,但没有尝试impact。我浪费了我的时间&搜索了很多代码,但没有找到任何解决方案。请帮帮我 public class GalleryFragment extends Fragment { private GalleryViewModel galleryViewModel; private Action
public class GalleryFragment extends Fragment {
private GalleryViewModel galleryViewModel;
private ActionModeCallback actionModeCallback;
private ActionMode actionMode;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
galleryViewModel =
ViewModelProviders.of(this).get(GalleryViewModel.class);
View root = inflater.inflate(R.layout.fragment_gallery, container, false);
final TextView textView = root.findViewById(R.id.text_gallery);
galleryViewModel.getText().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
textView.setText(s);
}
});
final Button btnLoad = root.findViewById(R.id.load);
btnLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
enableActionMode(1, true );
}
});
return root;
}
public void enableActionMode(int position, boolean bool) {
int count = 4;
if(actionMode == null) {
actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback);
}
if (count == 0) {
actionMode.finish();
actionMode = null;
} else {
actionMode.setTitle(String.valueOf(count));
actionMode.invalidate();
}
}
private class ActionModeCallback implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.actionbar_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// getSupportActionBar().hide();
menu.findItem(R.id.action_delete).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Log.d("API123", ""+item.getItemId());
switch (item.getItemId()) {
case R.id.action_delete:
// delete all the selected rows
//mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//clear selections
mode.finish();
actionMode = null;
}
}
}
公共类GalleryFragment扩展了片段{
专用GalleryViewModel GalleryViewModel;
私有ActionModeCallback ActionModeCallback;
私人行动模式;
公共视图onCreateView(@NonNull layoutiner充气机,
视图组容器,捆绑包savedInstanceState){
galleryViewModel=
ViewModelProviders.of(this.get)(GalleryViewModel.class);
视图根=充气机。充气(R.layout.fragment_gallery,container,false);
final TextView TextView=root.findviewbyd(R.id.text\u gallery);
galleryViewModel.getText().observe(这个,新的观察者(){
@凌驾
公共void onChanged(@Nullable String s){
textView.setText;
}
});
最终按钮btnLoad=root.findViewById(R.id.load);
btnLoad.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
enableActionMode(1,true);
}
});
返回根;
}
public void enableActionMode(整数位置,布尔布尔布尔值){
整数计数=4;
if(actionMode==null){
actionMode=((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback);
}
如果(计数=0){
actionMode.finish();
actionMode=null;
}否则{
actionMode.setTitle(String.valueOf(count));
actionMode.invalidate();
}
}
私有类ActionModeCallback实现ActionMode.Callback{
@凌驾
公共布尔onCreateActionMode(ActionMode模式,菜单){
mode.getMenuInflater().充气(R.menu.actionbar\u菜单,菜单);
返回true;
}
@凌驾
公共布尔onPrepareActionMode(操作模式,菜单){
//getSupportActionBar().hide();
menu.findItem(R.id.action\u delete).setShowAsAction(MenuItem.SHOW\u AS\u action\u ALWAYS);
返回false;
}
@凌驾
公共布尔值onActionItemClicked(ActionMode模式,菜单项){
Log.d(“API123”,“item.getItemId());
开关(item.getItemId()){
案例R.id.行动\删除:
//删除所有选定的行
//mode.finish();
返回true;
违约:
返回false;
}
}
@凌驾
公共void onDestroyActionMode(ActionMode模式){
//清晰的选择
mode.finish();
actionMode=null;
}
}
}
这是mycode,actionmode中的空指针。请帮帮我,我在浪费时间。正在搜索大量,未找到结果