Java 方法不会覆盖其超类中的方法

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/43056341/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 00:39:11  来源:igfitidea点击:

method does not override method in its superclass

javaandroidandroid-fragments

提问by user3332929

I'm trying to set the title for my action bar but its given me the error message "method does not override method in its superclass". I'm extending fragment.

我正在尝试为我的操作栏设置标题,但它给了我错误消息“方法没有覆盖其超类中的方法”。我正在扩展片段。

Here's the portion im having problems with

这是我遇到问题的部分

 @Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActivity().getActionBar().setTitle(mTitle);
}

Here is the code for the whole class (its incomplete because i'm still working on it

这是整个班级的代码(它不完整,因为我仍在研究它

package com.android.styles.radius360;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.view.Menu;


/**
 * Created by user on 3/23/2017.
 */

public class HomePageFragment extends Fragment {

private String[] mOptions;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private CharSequence mTitle;

private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;



public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.home_page, container, false);


    mOptions = getResources().getStringArray(R.array.options_array);
    mDrawerLayout = (DrawerLayout) v.findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) v.findViewById(R.id.left_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(getActivity(),
            R.layout.drawer_list_item, mOptions));
    // Set the list's click listener
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    mTitle = mDrawerTitle = getActivity().getTitle();
    mDrawerLayout = (DrawerLayout) v.findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout,
            R.string.drawer_open, R.string.drawer_close) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            getActivity().getActionBar().setTitle(mTitle);
            getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().getActionBar().setTitle(mDrawerTitle);
            getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };

    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);




return v;
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    // If the nav drawer is open, hide action items related to the content view
    super.onPrepareOptionsMenu(menu);
}

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActivity().getActionBar().setTitle(mTitle);
}


/* The click listner for ListView in the navigation drawer */
private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        selectItem(position);
    }
}

/** Swaps fragments in the main content view */
private void selectItem(int position) {
    // Create a new fragment and specify the planet to show based on position
    if(position ==0)
    {
        FragmentManager fragmentManager = getFragmentManager();

        SettingsPageActivity settings = new SettingsPageActivity();
        Fragment fragment = settings.createFragment();
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment)
                .commit();

    }
    // Insert the fragment by replacing any existing fragment




    // Highlight the selected item, update the title, and close the drawer
    mDrawerList.setItemChecked(position, true);
    mDrawerLayout.closeDrawer(mDrawerList);
}




}

采纳答案by michaeak

The class Fragmentor any of its super classes seem not to have the method public void setTitle(CharSequence title)so you can't use the @Overrideannotation. You can remove that annotation and you should be fine.

该类Fragment或其任何超类似乎没有该方法,public void setTitle(CharSequence title)因此您无法使用该@Override注释。您可以删除该注释,应该没问题。