Что означает эта ошибка компилятора - квалифицированный идентификатор в объявлении перед маркером ‘=’ & rdquo; в С ++?

Для меня я хотел изменить значок Burger с помощью значка Back Arrow в левой части ActionBar Fragment, так как я использую Navigation Drawer. Кроме того, добавление меню с правой стороны.

В главной операции он уже установлен - по умолчанию, когда Android Studio создает ящик навигации для меня - вот так:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open,
                R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

Проблема заключается в том, как настроить ActionBar в Fragment, поэтому, когда я перехожу к Fragment, он покажет мне настроенный ActionBar и когда Стрелка назад , он должен оставить фрагмент, а ActionBar должен вернуться в первое состояние.

В фрагменте ( Полная реализация ):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true); // To show the menu options
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
    super.onViewCreated(view, savedInstanceState);
    showActionBar(); // the method to change ActionBar
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // inflate the customized menu which already created in XML
    getActivity().getMenuInflater().inflate(R.menu.fragment_menu, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // add implementation when user select an item from the menu
    switch (item.getItemId()) {
        case R.id.option1:
            // do something
            return true;
        case R.id.option2:
            // do something
            return true;
        case R.id.option3:
            // do something
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

private void showActionBar() {
    // get the ToolBar from Main Activity
    final Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
    // get the ActionBar from Main Activity
    final ActionBar actionBar = ((AppCompatActivity)getActivity()).getSupportActionBar();
    // inflate the customized Action Bar View
    LayoutInflater inflater = (LayoutInflater) getActivity()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.fragment_actionbar, null);

    if (actionBar != null) {
        // enable the customized view and disable title
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayShowTitleEnabled(false);

        actionBar.setCustomView(v);
        // remove Burger Icon
        toolbar.setNavigationIcon(null);

        // add click listener to the back arrow icon
        v.findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // reverse back the show
                actionBar.setDisplayShowCustomEnabled(false);
                actionBar.setDisplayShowTitleEnabled(true);
                //get the Drawer and DrawerToggle from Main Activity
                // set them back as normal
                DrawerLayout drawer = getActivity().findViewById(R.id.drawer_layout);
                ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                        getActivity(), drawer, toolbar, R.string.navigation_drawer_open,
                        R.string.navigation_drawer_close);
                // All that to re-synchronize the Drawer State
                toggle.syncState();
                // Implement Back Arrow Icon 
                // so it goes back to previous Fragment
                getActivity().onBackPressed();
            }
        });
    }
}

fragment_actionbar.xml




    


ic_menu_back.xml


    

fragment_menu.xml



    
    
    

0
задан Prawn Hongs 25 March 2019 в 00:36
поделиться

2 ответа

MyExample::x является квалифицированным идентификатором , и вы поместили его в объявление перед токеном =. Это недопустимо в области блока.

0
ответ дан M.M 25 March 2019 в 00:36
поделиться

, поскольку переменная 'x' является модификатором частного доступа, это означает, что переменная x используется только в классе. Так что вы не можете использовать эту переменную в основной функции.

и есть 2 предложения.

сначала создайте метод получения, метод установки.

во-вторых, перейдите к модификатору общедоступного доступа.

, благодаря

0
ответ дан Seil Choi 25 March 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: