Android пример фрагмента для setHomeAsUpIndicator - PullRequest
2 голосов
/ 08 января 2020

Я пытаюсь адаптировать пример Android, созданный для действий, к фрагментам (https://www.youtube.com/watch?v=RhGMd8SsA14). Я хочу добавить элемент заметки во фрагмент и изменить панель действий. Я какое-то время возился с этим и думал, что просто попрошу помощи.

public class AddNoteActivity extends AppCompatActivity {
     ...

     @override
     protected void onCreate(Bundle savedInstanceState)
     {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_add_note);
          ...
          getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
          setTitle("Add Note");
     }
}

Я хотел поместить это во фрагмент, и это самое близкое, что я получил:

public class AddScenarioFragment extends Fragment {

    @Override
    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {

        inflater.inflate(R.menu.add_note_menu, menu);



        //change the title bar
        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
        actionBar.setTitle("Add Scenario");


        super.onCreateOptionsMenu(menu, inflater);
    }
}

Но я получаю эту ошибку: java .lang.NullPointerException: попытка вызвать виртуальный метод 'void android .app.ActionBar.setHomeAsUpIndicator (int)' для ссылки на пустой объект

Any идеи как это сделать?

Ответы [ 2 ]

1 голос
/ 08 января 2020

Это, кажется, работает:

    //reset the menu at top
    ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
    actionBar.setTitle("Add Scenario");

Панель действий androidx.appcompat.app.ActionBar

Теперь мне нужно выяснить, как с этим справиться в манифесте, чтобы сделать его функция. Приспосабливая это от деятельности, у меня было бы утверждение как это:

<activity android:name=".AddNoteActivity" android:parentActivityName=".MainActivity"/>
0 голосов
/ 08 января 2020

Просто перенесите код из onCreateOptionsMenu() в метод onCreateView().

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroupparent, Bundle savedInstanceState) {

        //change the title bar
        ActionBar actionBar = getActivity().getActionBar();

        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
        actionBar.setTitle("Add Scenario");
}

Попробуйте с этим и позвольте мне дать отзыв об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...