Как реализовать режим действия во фрагменте в androidx?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как реализовать режим действия во фрагменте в androidx?

Сообщение Anonymous »

Мне нужно реализовать режим действия во фрагменте, но в режиме действия возникает исключение нулевого указателя. Я пробовал так много, но не получил никаких результатов. Я новичок в андроиде. Я также пробовал startActionMode, но не повлиял.

Код: Выделить всё

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() {
@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;
}
}
}
Это мой код, нулевой указатель в режиме действия.

Подробнее здесь: https://stackoverflow.com/questions/623 ... n-androidx
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»